这就是我在process.php中所拥有的。
parse_str(file_get_contents("php://input"),$upload_data);
if (isset($upload_data)) {
print_r($upload_data);
exit;
}
这是我使用curl查询服务器的方式。
weldan@prindu:~$ curl -X PUT -H "X-TOKEN: test123" -F filedata=@/home/weldan/Pictures/Cool-Pictures1.jpg http://host.tld/process.php
Array
(
[------------------------------22031b6e799c
Content-Disposition:_form-data;_name] => "filedata"; filename="Cool-Pictures1.jpg"
Content-Type: image/jpeg
���
)
以便我知道那里有上传的文件。
目前的问题是,如何像$ _FILES变量一样处理这个文件?
也可以通过其他方式实现这一目标。
由于
答案 0 :(得分:0)
在PUT请求中填充$ _FILES数组。那是因为PUT请求将指定url中的文件名和正文中的文件内容。没什么。
您必须按照自己的建议使用php://input
。
upload.php的
<?php
/* PUT data goes to php://input */
echo file_get_contents("php://input");
然后使用以下curl命令行:
curl --upload -H "X-TOKEN: test123" a.txt http://localhost/upload.php
评论后更新:使用--upload选项可以满足您的需求。与-X PUT和-F不同,数据将被原始发送并且不多部分/表格数据编码..卷曲的隐藏宝藏之一;)
答案 1 :(得分:0)
您遇到的唯一方法是手动解析原始请求(请查看this gist)
parse_str(file_get_contents("php://input"), $_PUT);
解析原始请求