2016-08-06 2 views
0

Теперь я работаю над загрузкой файла. Поэтому я написал код с использованием вызова ajax. Это отлично работает, когда я загружаю файлы (ГБ) с моего локального сервера.Большая загрузка файла Сбой при вызове ajax

$.ajax({ 
    type: "POST", 
    url: "process/uploadFlatFile.htm", 
    enctype : 'multipart/form-data', 
    //timeout: 0, 
    crossDomain: true, 
    data : formData, 
    processData: false, 
    contentType: false, 
    cache: false, 
    dataType: 'json', 
    xhr: function() { 
     myXhr = $.ajaxSettings.xhr(); 
     //myXhr = new XMLHttpRequest(); 
     console.log("myXhr: " + myXhr.upload); 
     if(myXhr.upload){ 
      console.log("adding progress event listener"); 
      myXhr.upload.addEventListener('progress', showProgress, false); 
     } else { 
      console.log("Upload progress is not supported."); 
     } 
     return myXhr; 
    },beforeSend: function(xhr, opts) { 
     console.log("beforeSend:xhr: " + xhr + ", opts: " + opts); 
     currXhr = xhr; 
     showProgressBar(); 
     status.empty(); 
     var percentVal = '0%'; 
     bar.width(percentVal); 
     percent.html(percentVal); 
     $(cancelSelector).removeAttr('disabled'); 
    }, 

    success: function(result,status,xhr) { 
     console.log("success:result: " + result); 
     console.log("success:status: " + status); 
     console.log("success:xhr: " + xhr); 
     var percentVal = '100%'; 
     bar.width(percentVal); 
     //$("#fountainGG").hide(); 
     percent.html(percentVal); 
     $.unblockUI({ 
      onUnblock: function(){ 
       if(result=="success"){ 
        console.log("SUCCESS PART :") 

        alertMessage("Success","File Uploaded Successfully","info"); 
        setTimeout(function(){ 
         window.location.href = "processFlow.htm"; 
         //newProcessClicked('yes'); closeConDiv() 
        }, 2000); 
       }else{ 

        alertMessage("Error","Error in upload. Try Again !","info"); 
       } 
      } 
     }); 
    }, 
    complete: function(xhr,status){ 
     console.log("COMPLETE PART :") 
     console.log("complete:status: " + status + ", xhr: " + xhr); 
     $('#btnGoUpload').prop('disabled', false); 
    }, 
    error: function(xhr, statusText, err) { 
     $.unblockUI(); 
     console.log("statusText: " +statusText); 
     console.log("error: " + err); 
     var msg = "Error in uploading file. Try Again !"; 
     if (err == "abort"){ 
      msg = "File upload aborted."; 
     } 
     alertMessage("Error",msg,"info"); 
    } 
}); 

Но когда я отправляю ГБ (более 30 Гб) файлов с общедоступного сервера это будет ошибка часть АЯКС вызова после того, как пару раз. Я думаю, что это проблема тайм-аут подключения? Если это проблема с тайм-аутом соединения, как я могу его решить?

+0

какая ошибка регистрируется, когда она идет 'в часть ошибки ajax call' ... то есть что такое statusText и err –

+0

Я получаю 'error' в statusText – user3159781

+0

И что такое ошибка? –

ответ

0

Вы можете обойти возможный тайм-аут предел с помощью этой команды, чтобы поставить в начале вашего скрипта приемника PHP:

ini_set('max_execution_time', 0); 

Чтобы увеличить максимальный размер загрузки, что также может блокировать вас, что вам нужно установить значение upload_max_filesize и post_max_size в вашем php.ini:

; Maximum allowed size for uploaded files. 
upload_max_filesize = 40M 

; Must be greater than or equal to upload_max_filesize 
post_max_size = 40M 

Редактировать и перезапустить веб-сервер.

+0

Это не php. это код javascript – user3159781

+0

Извините, даже не знал, что можно обработать загруженный файл с помощью html в «process/uploadFlatFile.htm». Независимо от того, посмотрите на конфигурационный файл вашего принимающего сервера. – technico

+0

Какой у вас сервер? – technico

Смежные вопросы