2015-11-20 5 views
7

blobファイルをサーバーにアップロードするファイルオブジェクトを作成するためにFile()コンストラクタを使用していますが、コードはChromeでうまく動作しますが、SafariとInternet Explorerでは失敗します。 次のコードの行です:{:mimeStringタイプ}サファリのFile()コンストラクタの代替

image_url = new File([blob],file_name,{type: mimeString}); 

コードは、このラインで破り、コンソールでこのエラーを得ている「FileConstructorは(、FILE_NAME、新しいファイル([BLOB]」を評価コンストラクタではありません) ') "

Filereader APIを使用する代わりに、この問題を解決することはできません。

助けていただければ幸いです。ありがとう。

答えて

2

ウェブによると、Safariは​​コンストラクタをサポートしていません。 http://caniuse.com/#feat=fileapi

は、だから私は、あなたがhttps://github.com/mailru/FileAPI

を(私はそれを自分自身を使用していない)のために

が、特にこの1つは有用である可能性https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfillsここに記載されているpolyfillsの一部を使用多分FileReaderのを使用するか、するかと思う、このリンクを参照してください。

もこれを見て持っているSO What to use instead of FileReader for Safari?

+0

ありがとうございます!これらの可能な解決策を試してみましょう。 –

+1

私はhttps://github.com/danialfarid/ng-file-uploadディレクティブを使用していて、シムファイルを使用しており、クロスブラウザサポートの部分に記載されているコードを記述していますが、アップロードできませんSafariのファイル。 –

+0

devコンソールにエラーが報告されますか? –

8

に答える私はブロブAPIを使用することを提案、私は同じ問題を発見したと私はそのように解決:

var html = <svg>whatever on svg </svg> 
var fileName = "myfile.svg"; 
var blob = new Blob([html], {type: 'image/svg'}); 
blob.lastModifiedDate = new Date(); 
// var blobAttrs = {type: "image/svg"}; 
// var file = new File([html], fileName, blobAttrs); 
var formData = new FormData(); 
formData.append("file",blob,fileName); 

「ファイル」ではなく、そのまま使用することができます。

+0

私の一日を保存してくれてありがとう! – Jaison