Safari和IE的File()构造函数是否有替代方案?

问题描述 投票:10回答:2

我正在使用File()构造函数来创建用于将blob文件上载到服务器的文件对象。以下代码适用于Chrome,但Safari和Internet Explorer无效。

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

代码在此行中断开并在控制台中获取此错误“FileConstructor不是构造函数”(评估'new File([blob],file_name,{type:mimeString})')

使用FileReader API是替代方案,但我无法解决此问题。

angularjs file internet-explorer safari filereader
2个回答
13
投票

我建议使用blob 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);

它不是“文件”,但您可以像使用它一样使用它。


2
投票

根据网站“我可以使用”Safari不支持new File()构造函数。看到这个链接http://caniuse.com/#feat=fileapi

所以我认为你必须要么使用FileReader,要么使用这里列出的一些polyfill https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills

特别是这个可能对你有用https://github.com/mailru/FileAPI(我没有自己使用它)

还看看这个SO答案What to use instead of FileReader for Safari?

© www.soinside.com 2019 - 2024. All rights reserved.