使用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或旧版本。既不是iframes解决方案也不是插件。只是XmlHttpRequest Level 2.对于那些没有听说过的人,请看一下:https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects
答案 0 :(得分:2)
删除mimeType
参数,浏览器将生成具有所需边界的正确mime类型。
答案 1 :(得分:0)
我刚刚做到了。实际上没有办法通过AJAX上传文件。最好直接参考.php
文件。
答案 2 :(得分:0)
您可能需要将文件视为数组,以使Firefox和PHP能够理解。尝试更改上传字段的名称:
data.append("uploadedfiles[]", fileToUpload);