2015-11-22 3 views
0

У меня есть запрос на отправку, который загружает файл вместе с другой базовой информацией. Он отлично работает в браузере Chrome, но в IE он несовместим. Несколько раз загружается файл (файл + дополнительная информация), но в основном он не работает в IE. Я отслеживал почтовый запрос в Fiddler, и вкладка textview была пуста для этого запроса. Запрос не был завершен. Код ошибки был 408. У меня также появилось всплывающее сообщение от скрипача: «несоответствие длины содержимого: ожидание содержимого 3213, но клиент отправляет 0». Следовательно, сам запрос не был полным.Проблема с загрузкой файла с использованием FormatData в IE (angularjs)

Ниже отдавание является кодом для формирования fomrdata и после запроса

 var formData = new FormData(); 
     formData.append("file", file); 
     formData.append("info1", info1); 
     formData.append("info2", info2); 
     formData.append("info3", info3); 
     formData.append("info4", info4); 
     var defer = $q.defer(); 
     return $http.post(url, formData, 
     { 
      headers: { 'Content-Type': undefined }, 
      transformRequest: angular.identity 
     }); 

Пожалуйста, предложите мне решение этого problem.An альтернативного решения также будет работать.

ответ

0

У меня была аналогичная проблема с угловыми и FormData. В моем случае, в Chrome все работает нормально - в IE 11.20.10586 на моем компьютере с Windows 10 тоже не проблема - но с IE 11.0.9600.18059 (Windows 7) и IE 11.0.9600.17728 (Windows Server) невозможно отправить файл, IE зависает.

Чтение this issue, похоже, ошибка IE. Я не смог это исправить, но нашел обходной путь, который работал: дважды публиковать форму, первый раз без какого-либо файла. Попробуйте что-то вроде этого:

var formData = new FormData(); 
$http.post(url, formData, 
    { 
     headers: { 'Content-Type': undefined }, 
     transformRequest: angular.identity 
    }).success(function(){ 
     formData.append("file", file); 
     formData.append("info1", info1); 
     formData.append("info2", info2); 
     formData.append("info3", info3); 
     formData.append("info4", info4); 
     $http.post(url, formData, 
     { 
      headers: { 'Content-Type': undefined }, 
      transformRequest: angular.identity 
     }); 
    });