2016-11-01 10 views
1

角度$ httpを使用してファイルをアップロードしようとしています。Chromeで働いているSafariで角型アップロードが動作しません

これは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; 

は、これは私

ための作品です
関連する問題