使用 XMLHttpRequest Level 2 我想上传一个文件。 我正在使用 jQuery,所以我想优先使用 jQuery。
所以我写了下面的代码(coffescript,但熟悉javascript的人应该很容易阅读)
fileToUpload = event.currentTarget.files[0]
data = new FormData()
data.append("uploadedfile", fileToUpload)
$.ajax({
type: 'POST',
url: url,
data: data,
contentType: false,
processData: false,
mimeType: 'multipart/form-data',
})
使用该代码,在服务器端用 PHP 我做了一个 `
使用 Firefox 17.0.1 我什么也得不到。 $_FILES 为空,使用 Chromium 22.0 我得到上传的文件(格式奇怪,但至少是某种格式)
Array
(
[uploadedfile] => Array
(
[name] => filename.txt
[type] => application/octet-stream
[tmp_name] => /tmp/phpWwenhc
[error] => 0
[size] => 189
)
)
有谁知道这是否是 Firefox 的错误?有解决方法吗?难道我做错了什么? 我搜索了一个类似的问题,但我发现的所有建议答案都不适合我(不适用于 Firefox,没有使用 xhr 级别 2,等等)
提前致谢。
请: 我不关心 IE 或旧版本。 iframe 解决方案和插件都不是。只是 XmlHttpRequest Level 2。对于那些没有听说过它的人,请看一看:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects
最佳答案
删除mimeType
参数,浏览器将生成具有所需边界的正确 mime 类型。
关于php - Ajax 文件上传在 Chrome 中有效,但在 Firefox 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14113082/