使用新的 FileReader API 和 DataURL 的 Javascript 预览似乎效率低下

标签 javascript html file-upload filereader data-url

我正在使用新的 FileReader API 在上传前预览图像。这是使用 DataURL 完成的。但如果图像很大,DataURL 可能会很大。这对我来说尤其是个问题,因为用户可能一次上传多张图片,而预览这批图片实际上大大降低了我的浏览器速度,而且 chrome 还崩溃了几次。

除了使用 DataURL 在上传之前在客户端上预览图片之外,还有其他选择吗?

最佳答案

您还可以将数据存储在客户端的磁盘上(在另一个位置,以便您可以使用 JavaScript 访问该文件)。关于这个主题,这篇文章相当广泛:

http://www.html5rocks.com/en/tutorials/file/filesystem/

但并非所有浏览器都支持它。

你必须请求存储空间(文件系统),然后创建一个文件,向其中写入数据,最后获取 URL:

window.requestFileSystem(window.PERSISTENT, 5*1024*1024, function(fs) {
    fs.root.getFile(filename, {create: true}, function(fileEntry) {
        fileEntry.createWriter(function(fileWriter) {
            var arr = new Uint8Array(data.length);

            // fill arr with image byte data here

            var builder = new BlobBuilder();
            builder.append(arr.buffer);
            var blob = builder.getBlob();

            fileWriter.write(blob);

            location.href = fileEntry.toURL(); // navigate to file. The URL does not contain the data but only the path and filename.
        });
    });
}, function() {});

关于使用新的 FileReader API 和 DataURL 的 Javascript 预览似乎效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6723931/

相关文章:

jquery - 如何在使用 Jquery 插入之前检查特定的 html 元素是否已经存在

c# - 上传文件在更新面板中不起作用

angularjs - 当输入类型为 "file"时,$dirty 无法按预期工作

javascript - Django 开发服务器上的 Ajax 和 JQuery

javascript - 如何使用 jQuery 的 : . live() 绕过事件气泡

javascript - 如何在 jquery mobile/中使用范围输入

ios - 从 Mobile Safari (iOS8) 访问 iPhone 相机

javascript - 为什么 *.* 在正则表达式中返回 undefined

html - css/html,如何缩放和居中 Logo 图像

html - 在 CSS 背景图片中添加 URL 链接?