2016-11-01 2 views
1

Я пытаюсь загрузить файл с помощью углового $ http.Угловая форма загрузки не работает в Safari, работая в Chrome

Он работает правильно в Chrome и даже отправляет запрос в Safari (и имеет 200 ответов от сервера), но не файл, не загруженный на сервер.

Я также пытаюсь использовать библиотеку ngUpload, но с тем же результатом - файл не был загружен на сервер.

код Источник:

var formData = new FormData(); 
      formData.append('userid', Users.getCurrentId()); 
      formData.append('avatar', myFile); // this is File() size abput 100K 

      $http({ 
       url: AppState.getApiHost()+AppState.getApiPrefix() + '/setavatar', 
       method: "POST", 
       data: formData, 
       headers: {'Content-Type': undefined} 
      }) 
       .then(function (res) { 
        console.log('Success', res); 
       }) 
       .catch(function (err) { 
        console.log('Error',err) 
       }); 

ответ

0

Я только что нашел ответ. Проблема была с File (объект) был создан с помощью File() конструктор:

return new File([u8arr], filename, {type:mime}); 

Но это не работает должным образом с Safari. Он создает объект File с размером равного размера файла, но фактический файл пуст. И если я попытаюсь отправить его после добавления в форму - форма отправил пустой файл (даже если он выглядит как пустой файл).

Я заменил его на этот код:

var the_blob = new Blob([u8arr]); 
the_blob.lastModifiedDate = new Date(); 
the_blob.name = 'avatar.png' 

return the_blob; 

Это работа для меня

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