【发布时间】:2011-09-23 14:13:45
【问题描述】:
这是对我需要做的事情的描述(我知道这很模糊,但这是我所知道的):
可以通过向图像 URI 发送 HTTP PUT 请求来上传图像。请求的正文应包含图像数据,或者如果图像的最后修改日期相关,则应包含包装图像的 XML 或 JSON 文档。在后一种情况下,XML 根节点应该称为“image”,它应该包含节点“lastModified”(将日期指定为 Unix 时间戳)和包含图像数据的“data”。 JSON 表示应该包含两个值作为对象字段。 内容类型应为“application/x-www-form-urlencoded”,请求应包括表单参数文件大小、文件名、目录和 lastmodified。响应将是一个 ActionResponse,并将在尝试上传时通知客户端可能出现的任何问题。
这是我目前的代码:
function addImage($path) {
global $serviceURL;
global $curlhandle;
$request_headers = array("X-Requested-With: XMLHttpRequest", "Accept: application/json", "Content-Type: application/x-www-form-urlencoded; charset=UTF-8");
curl_setopt($curlhandle, CURLOPT_POSTFIELDS, $request_param);
curl_setopt($curlhandle, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($curlhandle, CURLOPT_PUT, 1);
curl_setopt($curlhandle, CURLOPT_URL, $serviceURL."image/".$path);
$post = array(
"file_box" => "@/Users/steven/Desktop/test.jpg"
);
curl_setopt($curlhandle, CURLOPT_POSTFIELDS, $post);
$data=curl_exec($curlhandle);
var_dump($data);
}
这段代码最终给了我以下错误:
HTTP/1.1 415 Unsupported Media Type
谁能帮忙?
【问题讨论】:
-
文件上传通常使用
multipart/form-datacontent-type 来完成,它为所有内容添加了一个 MIME 包装器。 application/url-encoded 用于没有文件的普通表单。