除非Web检查器打开,否则多个文件上载在上面的Safari 6.1中不起作用

时间:2013-12-11 21:19:56

标签: javascript php html5 file-upload safari

所以我有一个文件上传站点,我使用HTML5分块功能上传多个文件。它适用于Chrome,Firefox,IE(基本上具有HTML5功能的浏览器)以及Safari,但最近我测试了它,Safari 6.0.5工作正常,但在Safari 6.1上,如果我上传多个文件,一些文件是0字节。我不确定发生了什么。

当我测试时,我上传大约70个文件,总计200MB,每个文件介于5-8MBish ..所以没有发生分块..但是当我检查服务器时,大多数文件都是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个字节。造成这种差异的原因是什么?

1 个答案:

答案 0 :(得分:1)