2013-12-11 13 views
7

Mam więc stronę do przesyłania plików, którą rozwijam przy użyciu możliwości HTML5 do dzielenia plików w celu przesłania wielu plików. działa dobrze w przeglądarkach Chrome, Firefox, IE (w zasadzie przeglądarka z obsługą HTML5) oraz Safari, ale ostatnio testuję, Safari 6.0.5 działa dobrze, ale w Safari 6.1, jeśli wgrani kilka plików, niektóre pliki to 0 bajty. Nie jestem pewien, co się stało.Przesyłanie wielu plików nie działa w Safari 6.1 powyżej, chyba że inspektor sieci otworzy

Po przetestowaniu przesyłam około 70 plików w sumie 200MB, a każdy plik jest między 5-8MBisza ... więc nie ma tu żadnych problemów ... ale kiedy sprawdzam na serwerze, większość plików ma 0 bajtów (jak nigdy pobierz) z wyjątkiem kilku plików (prawdopodobnie 3-5 plików).

Czy jest jakaś różnica między przeglądarką Safari 6.0.5 a przeglądarką Safari 6.1?

Mój kod jest w zasadzie w pigułce: Javascript będzie porąbał każdy plik, jeśli jest większy niż 10 MB/plik, jeśli nie, po prostu wgrać będzie taki, jaki jest. , a następnie PHP zajmie się przesyłaniem (standardowy styl przesyłania plików 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); 

kod mądry to jest coś takiego ...

jakiś pomysł co jest nie tak z Safari 6.1?

sprawdzić folder tmp plik tmp podczas wysyłania jest 0 bajtów ..

UWAGA: Safari 6.1+, Jeśli inspektor internetowych na każdy plik zostanie wysłany poprawnie, jeśli jest wyłączony, z 10 plików, tylko 3 zostały przesłane, reszta to 0 bajtów. co powoduje tę różnicę?

+1

To może lub nie może pomóc, ale wygląda na to, że działa w Safari 7.0. Uważam, że jest to prawdopodobnie błąd w Safari 6.1, ponieważ wiele osób zgłosiło ten sam problem w wersji 6.1. – Telshin

+0

@Telshin nadal się zdarza na Safari 7 – Harts

+0

W jaki sposób wywołujesz funkcję 'uploadFile()'? – R3tep

Odpowiedz

1

Istnieje wiele wątków omawiających ten sam problem:

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?

I tylko obejście tego problemu jest wyłączenie wielokrotnego wysyłania dla Safari.

+0

to nie jest to samo .. ponieważ większość pytań ma 2 lata .. co jest wciąż starą wersją Safari .. i mój przypadek Te Safari działa. Tylko zaczynając od Safari 6.1, to nie działa w moim przypadku. dopiero po zaktualizowaniu Safari z wersji 6.0.5 na wyższy problem wystąpił, – Harts

+0

ok, jeśli tak, to usunę moją odpowiedź – Oleg

Powiązane problemy