使用 HTTP PUT 方法上传测试文件

我使用 HTTPPUT 方法编写了一个上传文件的服务。

Web 浏览器不支持 PUT,所以我需要一个测试方法。它作为一个 POST 从浏览器击中它工作得很好。

更新 : 这是起作用的。我试过用 Poster,但是它和使用 Fiddler 有相同的问题。您必须知道如何构建请求。Curl 解决了这个问题。

curl -X PUT "localhost:8080/urlstuffhere" -F "file=@filename" -b "JSESSIONID=cookievalue"
190384 次浏览

在我看来,这种测试的最佳工具是 网站: http://curl.haxx.se/rel = “ noReferrer”> curl 。它的 --upload-file选项通过 PUT上传一个文件,这正是您想要的(它还可以做更多的事情,比如修改 HTTP 头,以备不时之需) :

curl http://myservice --upload-file file.txt

对于 curl,使用 -d开关怎么样? 比如: curl -X PUT "localhost:8080/urlstuffhere" -d "@filename"

curl -X PUT -T "/path/to/file" "http://myputserver.com/puturl.tmp"

如果你使用 PHP,你可以使用下面的代码来测试你的 PUT 上传:

#Initiate cURL object
$curl = curl_init();
#Set your URL
curl_setopt($curl, CURLOPT_URL, 'https://local.simbiat.ru');
#Indicate, that you plan to upload a file
curl_setopt($curl, CURLOPT_UPLOAD, true);
#Indicate your protocol
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS);
#Set flags for transfer
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
#Disable header (optional)
curl_setopt($curl, CURLOPT_HEADER, false);
#Set HTTP method to PUT
curl_setopt($curl, CURLOPT_PUT, 1);
#Indicate the file you want to upload
curl_setopt($curl, CURLOPT_INFILE, fopen('path_to_file', 'rb'));
#Indicate the size of the file (it does not look like this is mandatory, though)
curl_setopt($curl, CURLOPT_INFILESIZE, filesize('path_to_file'));
#Only use below option on TEST environment if you have a self-signed certificate!!! On production this can cause security issues
#curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
#Execute
curl_exec($curl);