我使用jQuery的ajax函数将文件发送到服务器端PHP脚本时遇到问题.可以获取文件列表$('#fileinput').attr('files')但是如何将此数据发送到服务器?使用文件输入时$_POST,服务器端php脚本上的结果array()为0(NULL).
我知道这是可能的(虽然我到目前为止还没有找到任何jQuery解决方案,只有Prototye代码(http://webreflection.blogspot.com/2009/03/safari-4-multiple-upload-with-progress.html) ).
这似乎是相对较新的,所以请不要通过XHR/Ajax提及文件上传,因为它肯定有用.
我需要Safari 5中的功能,FF和Chrome会很好但不是必需的.
我现在的代码是:
$.ajax({
url: 'php/upload.php',
data: $('#file').attr('files'),
cache: false,
contentType: 'multipart/form-data',
processData: false,
type: 'POST',
success: function(data){
alert(data);
}
});
Run Code Online (Sandbox Code Playgroud) 我已经写了一段时间的iPhone应用程序,将数据发送到服务器,接收数据(通过HTTP协议),而不用考虑太多.大多数情况下,我理论上熟悉流程,但我不太熟悉的部分是HTTP多部分请求.我知道它的基本结构,但它的核心是我.
似乎每当我发送不同于纯文本(如照片,音乐)的东西时,我都必须使用多部分请求.有人可以简单地向我解释为什么使用它以及它的优点是什么?
如果我使用它,为什么以这种方式发送照片更好?
我有一个REST Web服务,目前公开此URL:
用户可以POST使用以下JSON:
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873
}
Run Code Online (Sandbox Code Playgroud)
为了创建新的媒体元数据.
现在我需要能够在媒体元数据的同时上传文件.解决这个问题的最佳方法是什么?我可以引入一个名为filebase64 的新属性编码文件,但我想知道是否有更好的方法.
还有multipart/form-data像HTML表单一样使用,但我正在使用REST Web服务,我想尽可能坚持使用JSON.
问题
尝试使用 JSON 格式的文件上传和模型数据发送 multipart/formdata post 请求。不知道为什么没有太多的工作参考,无法使那些存在的工作。也可能做错了什么,或者让它变得更复杂。
参考文献
题
不知何故,我的帖子请求有效负载上的 json 内容似乎不包含自动识别的 Content-Type: application/json。
即使将 POST 的内容类型设置为 undefined/false 也不起作用。需要一些关于问题或如何解决的建议?
小提琴上传的网络日志
请求头
Accept:application/json, text/plain, */*
Content-Length:361
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary7NukqN6GtRwugBSJ
Run Code Online (Sandbox Code Playgroud)
请求有效载荷
------WebKitFormBoundary7NukqN6GtRwugBSJ
Content-Disposition: form-data; name="file"; filename="sample.csv"
Content-Type: text/csv
------WebKitFormBoundary7NukqN6GtRwugBSJ
Content-Disposition: form-data; name="data"
{"name":"a good name","comments":"some comments"}
------WebKitFormBoundary7NukqN6GtRwugBSJ--
Run Code Online (Sandbox Code Playgroud) file-upload ×3
json ×2
ajax ×1
angularjs ×1
form-data ×1
http-headers ×1
jquery ×1
multipart ×1
post ×1
rest ×1
web-services ×1