我剛剛寫了一個簡單的Web服務,用於顯示包含單個「文件」類型上傳字段和單個提交按鈕的Web表單。我製作了這個簡單的網頁,目的是讓人們可以使用它,並且在不同機器上的腳本也可以以編程方式執行它。我已經完成了所有人工部分的測試,現在我意識到我不知道如何在第二臺機器上構建一個URL,以便在第一臺機器上成功執行此cgi腳本(並從第二臺機器上傳文件到第一臺機器)。如何以編程方式執行包含「文件」類型上傳輸入字段的CGI腳本表單?
我確實有構建包含表單字段的URL的經驗,但從未使用過「file」類型的上傳輸入字段,所以我正在爲此苦苦掙扎。也許我錯了。
如果我的簡單Web服務是一個名爲「myscript.pl」的cgi-bin腳本,並且文件上傳字段被稱爲「uploadthis」,並且我想要以編程方式上傳的第二臺機器上的文件位於「 C:\ myfile.txt「,那麼我不應該只能在」http://machine1/cgi-bin/myscript.pl?uploadthis=C:\ myfile.txt「形式的第二臺機器上的腳本中構建一個URL,並且該文件會以編程方式上傳,就好像一個人有手動點擊Web表單上的瀏覽按鈕並選擇該文件並點擊提交按鈕?
當我在第一臺機器上彈出cgi腳本表單並瀏覽到該文件並單擊提交時,它可以正常工作。該文件似乎被網頁瀏覽器上傳得很好。但是當我在瀏覽器中輸入上面的URL來手動測試文件上傳URL時,我將該URL編程到另一臺機器上的腳本中,上傳的文件是一個長度爲零的文件。它創建一個文件,但它是完全空的。如果我使用已知的錯誤文件名,例如「http://machine1/cgi-bin/myscript.pl?uploadthis=C:\ myfilethatdoesntexist.txt」,則結果相同。我究竟做錯了什麼?
我想用Apache 2.2和ActivePerl 5.10.0在幾臺Windows XP PC上完成這個任務,表單方法是「post」。