我刚刚(在 Perl 中)编写了一个简单的 Web 服务,它显示了一个包含单个“文件”类型的上传字段和一个提交按钮的 Web 表单。我制作了这个简单的网页,目的是让人类可以使用它,并且不同机器上的脚本也可以以编程方式执行它。我已经完成并测试了人的部分,现在我才意识到我不知道如何在第二台机器上构建一个 URL,该 URL 在第一台机器上成功执行这个 cgi 脚本(并从第二台机器上传一个文件到第一台机器)。
我确实有一些构建包含表单字段的 URL 的经验,但以前从未使用过“文件”类型的上传输入字段,所以我有点挣扎。也许我用错了。
如果我的简单 Web 服务是一个名为“myscript.pl”的 cgi-bin 脚本,并且文件上传字段名为“uploadthis”,并且我要以编程方式上传的第二台机器上的文件位于“C:\myfile”中.txt”,那么我不应该只在第二台机器上的脚本中构造一个 URL,格式为“ http://machine1/cgi-bin/myscript.pl?uploadthis=C :\myfile.txt”并且该文件以编程方式上传,就像人类手动单击 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”。