【发布时间】:2013-12-30 01:49:02
【问题描述】:
所以我有一个文件上传网站,我使用 HTML5 分块功能来上传多个文件。它在 Chrome、Firefox、IE(基本上具有 HTML5 功能的浏览器)以及 Safari 上运行良好,但最近我对其进行了测试,Safari 6.0.5 运行良好,但在 Safari 6.1 上,如果我上传多个文件,有些文件为 0字节。我不确定发生了什么。
当我测试时,我上传了大约 70 个文件,总计 200MB,每个文件在 5-8MB 之间。所以没有发生分块。但是当我在服务器上检查时,大多数文件都是 0 字节(就像它永远不会得到上传)除了少数文件(大概3-5个文件)
Safari 6.0.5 及以下版本与 Safari 6.1 有什么区别吗?
我的代码基本上是: 如果每个文件大于 10MB/文件,Javascript 会将其分块,否则它将按原样上传。 然后 PHP 将处理上传(标准文件上传样式 move_uploaded_file())。
function uploadFile(file_blob_chunk, file_name, file_part, total_file_chunk, file_id) {
//create a progress bar based on file id (check if it's the 0 part, otherwise there will be multiple bar for same file)
if(file_part == 0) {
progressBar(file_id);
}
//ajax call for creating multipart data form
fd = new FormData();
fd.append("file_for_upload", file_blob_chunk);
fd.append("file_id", file_id);
fd.append("file_name", file_name);
fd.append("file_part", file_part);
xhr = new XMLHttpRequest();
xhr.fid = file_id;
xhr.fid_name = file_name;
xhr.fid_part = file_part;
xhr.fid_total_chunk = total_file_chunk;
xhr.upload.fid = file_id;
xhr.upload.fid_part = file_part;
xhr.upload.fid_total_chunk = total_file_chunk;
xhr.open("POST", "datas/upload/" + file_name + '/' + file_part, true);
xhr.send(fd);
代码明智的就是这样......
知道 safari 6.1 有什么问题吗?
查看tmp文件夹,上传时tmp文件为0字节..
注意:Safari 6.1+,如果 web 检查器打开,每个文件都正确上传,如果它关闭,则 10 个文件中只有 3 个被上传,其余为 0 字节。造成这种差异的原因是什么?
【问题讨论】:
-
这可能有帮助,也可能没有帮助,但它似乎在 Safari 7.0 中有效。我相信这可能是 safari 6.1 的一个错误,因为我在 6.1 中看到多个报告相同的问题。
-
@Telshin 它仍然发生在 Safari 7 上
-
函数
uploadFile()怎么称呼你? -
文件大小是多少??
-
@R3tep 我调用函数上传文件的方式只是标准。而(开始
标签: javascript php html file-upload safari