3

使用 XMLHttpRequest Level 2 我想上传一个文件。我正在使用 jQuery,所以我想优先使用 jQuery。

所以我写了以下代码(咖啡脚本,但任何熟悉 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 级别 2。对于那些没有听说过的人,请查看: https ://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects

4

3 回答 3

2

删除该mimeType参数,浏览器将生成具有所需边界的正确 mime 类型。

于 2013-01-01T22:24:06.380 回答
0

我刚刚成功了。真的没有办法通过 AJAX 上传文件。最好直接参考.php文件。

于 2013-01-01T19:11:51.877 回答
0

您可能需要将文件视为一个数组才能让 Firefox 和 PHP 理解。尝试更改上传字段的名称:

data.append("uploadedfiles[]", fileToUpload);
于 2013-01-01T23:12:23.650 回答