2013-12-11 3 views
7

So habe ich eine Datei-Upload-Site, die ich HTML5 Chunking-Fähigkeit zum Hochladen mehrerer Dateien zu entwickeln. es funktioniert gut in Chrome, Firefox, IE (grundlegend Browser mit HTML5-Fähigkeit) sowie Safari, aber kürzlich habe ich es getestet, Safari 6.0.5 funktioniert gut, aber auf Safari 6.1, wenn ich mehrere Dateien hochladen, sind einige Dateien 0 Bytes. Ich bin mir nicht sicher, was passiert ist.Mehrere Datei-Upload funktioniert nicht in Safari 6.1 oben, es sei denn Web Inspector geöffnet

Wenn ich getestet habe, lade ich etwa 70 Dateien mit insgesamt 200 MB, und jede Datei ist zwischen 5-8MBisch .. so gibt es keine Chunking Geschehen .. aber wenn ich auf dem Server, die meisten Datei sind 0 Bytes (wie nie hochgeladen werden) außer ein paar Dateien (wahrscheinlich 3-5 Dateien)

Gibt es einen Unterschied zwischen Safari 6.0.5 und darunter, mit Safari 6.1?

Mein Code ist im Grunde genommen in Kurzform: Javascript wird jede Datei chunk, wenn es größer als 10MB/Datei ist, wenn nicht wird es einfach hochladen, wie es ist. dann wird PHP den Upload übernehmen (Standard-Datei-Upload-Stil 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); 

Code etwas, das es ist klug, wie das ...

eine Ahnung, was mit Safari 6.1 ist falsch?

Ich überprüfe der tmp-Ordner, beim Upload der Datei tmp 0 Bytes .. ist

HINWEIS: Safari 6.1+, wenn Web-Inspektor auf, richtig jede Datei hochgeladen, wenn er ausgeschaltet ist, von 10 Dateien, nur 3 wurden hochgeladen, der Rest ist 0 Bytes. Was verursacht diesen Unterschied?

+1

Dies kann oder kann nicht helfen, aber es scheint in Safari 7.0 zu funktionieren. Ich glaube, das ist wahrscheinlich ein Bug mit Safari 6.1, da ich mehrfach das gleiche Problem in 6.1 gesehen habe. – Telshin

+0

@Telshin es passiert immer noch auf Safari 7 – Harts

+0

Wie rufen Sie die Funktion 'uploadFile()'? – R3tep

Antwort

1

viele Threads Es gibt das gleiche Problem diskutieren:

file input size issue in safari for multiple file selection

https://github.com/moxiecode/plupload/issues/363

Any workarounds for the Safari HTML5 multiple file upload bug?

Und die einzige Abhilfe für dieses Problem ist es, mehrere Upload für Safari zu deaktivieren.

+0

das ist nicht ganz das gleiche .. weil die meisten Fragen 2 Jahre alt sind .. das ist immer noch die alte Safari-Version .. und in Mein Fall Diese Safari funktioniert. Erst ab Safari 6.1 funktioniert es in meinem Fall nicht. erst nachdem ich Safari von 6.0.5 auf höher aktualisiert habe, ist das Problem aufgetreten – Harts

+0

ok, wenn ja, lösche ich meine Antwort – Oleg

Verwandte Themen