【发布时间】:2026-01-15 10:15:01
【问题描述】:
我在使用 jQuery 的 ajax 函数向服务器端 PHP 脚本发送文件时遇到问题。
可以使用$('#fileinput').attr('files') 获取文件列表,但如何将此数据发送到服务器?使用文件输入时,服务器端 php 脚本上的结果数组 ($_POST) 为 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);
}
});
【问题讨论】:
-
遗憾的是使用 FormData 对象在 IE 上不起作用
-
@GarciaWebDev 据说您可以使用带有 Flash 的 polyfill 来支持相同的 API。查看github.com/Modernizr/Modernizr/wiki/… 了解更多信息。
-
可能duplicate.
-
您可以使用
$(':file')选择所有输入文件。就是简单一点。 -
@RameshwarVyevhare 该答案是在回答此问题五年后发布的。请不要为了宣传您自己的答案而提出类似的问题。
标签: jquery ajax file-upload multipartform-data form-data