首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML5文件应用编程接口-切片?

HTML5文件应用编程接口-切片?
EN

Stack Overflow用户
提问于 2011-09-29 16:51:52
回答 2查看 10.5K关注 0票数 7

HTML5 Rocks上有一些关于文件上传的很好的例子,但对我来说有一些不够清楚。

据我所知,关于file slicing的示例代码是从文件中获取特定部分,然后读取它。正如注释所说,当我们处理大文件时,这是很有帮助的。

关于monitoring uploads的例子还指出,当我们上传大文件时,这是很有用的。

如果不对文件进行切片,我是否安全?我指的是服务器端的问题,内存等。Chrome目前不支持File.slice(),如果可能的话,我不想使用臃肿的jQuery插件。

EN

回答 2

Stack Overflow用户

发布于 2011-10-12 00:23:57

Chrome和FF都支持File.slice(),但前段时间当它为its semantics changed时,它被前缀为File.webkitSlice() File.mozSlice()。还有另一个使用它here读取.zip文件的部分内容的示例。新的语义是:

代码语言:javascript
复制
Blob.webkitSlice( 
  in long long start, 
  in long long end, 
  in DOMString contentType 
); 

不切开它你安全吗?当然可以,但请记住,您正在将文件读取到内存中。HTML5Rocks教程提供了将上传分块作为潜在的性能改进。有了一些像样的服务器逻辑,你也可以更容易地从失败的上传中恢复。如果99%失败,则用户不必重试整个500MB文件:)

票数 6
EN

Stack Overflow用户

发布于 2012-05-29 18:15:34

这是将文件切片为blobs的方法:

代码语言:javascript
复制
function readBlob() {
    var files = document.getElementById('files').files;
    var file = files[0];
    var ONEMEGABYTE = 1048576;
    var start = 0;
    var stop = ONEMEGABYTE;

    var remainder = file.size % ONEMEGABYTE;
    var blkcount = Math.floor(file.size / ONEMEGABYTE);
    if (remainder != 0) blkcount = blkcount + 1;

    for (var i = 0; i < blkcount; i++) {

        var reader = new FileReader();
        if (i == (blkcount - 1) && remainder != 0) {
            stop = start + remainder;
        }
        if (i == blkcount) {
            stop = start;
        }

        //Slicing the file 
        var blob = file.webkitSlice(start, stop);
        reader.readAsBinaryString(blob);
        start = stop;
        stop = stop + ONEMEGABYTE;

    } //End of loop

} //End of readblob
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7594760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档