标签: fileapi

6
推荐指数
1
解决办法
4874
查看次数

HTML5文件API - 切片与否?

HTML5 Rocks上有一些很好的文件上传示例,但有些内容对我来说不够清晰.

据我所知,关于文件切片的示例代码是从文件获取特定部分然后读取它.正如笔记所说,当我们处理大文件时,这很有用.

关于监控上传的示例还指出,当我们上传大文件时,这非常有用.

我没有切片文件安全吗?我的意思是服务器端问题,内存等.File.slice()目前Chrome不支持,如果可能,我不想使用膨胀的jQuery插件.

html5 file-upload fileapi

6
推荐指数
1
解决办法
9925
查看次数

如果没有文件输入,则禁用文件拖放

我认为解决这个问题的方法是盯着我,但我似乎无法找到它.

所以,我正在创建一个具有小文件上传部分的网站.上传部分可以为不同的设备和设备方向(即iPhone,iPad,纵向和横向)上传图像.我可以很容易地弄清楚如何在各个设备图标上实现拖放,但如果用户错过掉落区域,浏览器将只导航到他们系统上的该图像.如果没有文件输入类型来接收拖动的文件,如何禁用拖放?

javascript drag-and-drop file-upload fileapi

6
推荐指数
1
解决办法
1万
查看次数

JavaScript for Files中的快速低冲突非加密哈希

我正在寻找在JavaScript中实现低冲突的快速哈希.它不需要是加密哈希.我基本上使用它来查看某个给定文件是否已经上传(或部分上传)到用户的帐户,以便在大(视频)文件上保存一些上传时间.

我正在使用新的HTML5文件API来读取文件的切片.然后我把它交给SparkMD5给我一个文件的哈希值.我喜欢SparkMD5允许我进行增量散列的事实,所以我不必在内存中读取整个内容.

总的来说,SparkMD5可以满足我的需求,但对于大型文件,它可能需要一段时间才能获得我的哈希值(300MB文件大约需要30秒).我希望减少这一点.我不是那么了解哈希函数,所以我不想寻找一些东西,并且理想地寻找已经实现的库.

javascript hash html5 fileapi

6
推荐指数
1
解决办法
1842
查看次数

Filesystem API在Chrome v27和v29中无效

我正在尝试设置一个文件存储空间以供以后在Phonegap中使用,但现在在Chrome中进行调试.按照html5rocks中描述的方式只允许我从用户请求配额,但是不执行请求文件系统时的回调.看到:

window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024*1024, function(grantedBytes) {
    requestFS(grantedBytes);
}, onError);

function requestFS(grantedBytes) {
    window.webkitRequestFileSystem(window.PERSISTENT, grantedBytes, function(fs) {
        // ... does not get called ###################################
    }, onError);
}
Run Code Online (Sandbox Code Playgroud)

现在Chrome警告我,webkitStorageInfo已被弃用,并且今天有一个新标准https://dvcs.w3.org/hg/quota/raw-file/tip/Overview.html.我尝试使用navigator.webkitPersistentStorage但没有成功.

文件系统API是否可能当前不工作或已被弃用,或者我的上述代码可能有问题?

下面的函数也没有做任何事情,没有错误可见:

navigator.webkitPersistentStorage.queryUsageAndQuota(function(usage, quota) {
    console.log(arguments);

    navigator.webkitPersistentStorage.requestQuota(1024 * 1024, function(grantedQuota) {
        console.log(arguments);

        window.webkitRequestFileSystem(window.PERSISTENT, 1024 * 1024, function(fs) {
            console.log(arguments);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

更新:

我得到了Eric Bidelman工作的Filer,所以我的代码中的某些东西一定是错的,尽管我看不出Filer init方法和我正在做的事情之间的区别.

javascript html5 google-chrome fileapi cordova

6
推荐指数
1
解决办法
7125
查看次数

使用HTML5 File API在循环中读取多个文件

我使用HTML5文件API来读取二进制文件.用户可以选择多个文件,然后单击按钮将它们复制到JavaScript对象中.我的代码列在这里:

   <script>         
     var data = new Object;
     function ReadFiles()
     {
         var files = document.getElementById('file').files;
         for (var i = 0; i < files.length; i++) {
             var reader = new FileReader();
             reader.onloadend = function (evt) {
                 if (evt.target.readyState == FileReader.DONE) {
                     data["File_Content" + i] = btoa(evt.target.result);
                 }
             };
             reader.readAsBinaryString(files[i]);
         }
     }
   </script>
   <input type="file" id="file" name="file[]" multiple />
   <button onclick="ReadFiles();">Read Files</button>
Run Code Online (Sandbox Code Playgroud)

如果用户输入三个文件,则只有无效的属性"File_Content3"将被添加到具有值的"data"对象中; 不创建其他三个有效属性'File_Content0','File_Content1'和'File_Content2'.

任何人都可以解决这个问题吗?谢谢.

javascript html5 fileapi

6
推荐指数
1
解决办法
8312
查看次数

配额超出了尝试使用HTML File API创建文件的情况

在打包的Chrome应用中,我正在尝试从PERSISTENT存储中的文件中读取,如果它不存在则创建它:

window.webkitRequestFileSystem(PERSISTENT, 1024*1024, function(fileSystem) {
    fileSystem.root.getFile('file.txt', {create: true}, function(fileEntry) {
        fileEntry.file(function(file) {
            var reader = new FileReader();
            reader.onloadend = function(e) {
                console.log(this.result);
            };
            reader.readAsText(file);
         }, errorHandler);
    }, errorHandler);
});
Run Code Online (Sandbox Code Playgroud)

但是我收到了The operation failed because it would cause the application to exceed its storage quota.错误.TEMPORARY存储给了我同样的错误.我应该在manifest.json中指定什么吗?

javascript html5 fileapi google-chrome-app

6
推荐指数
1
解决办法
3453
查看次数

Firefox - 仅在从Web Worker调用时才"定义FileReader"

在Firefox中,以下代码在主浏览器线程中正常运行时正常工作 -

var fr = new FileReader();
Run Code Online (Sandbox Code Playgroud)

..但是当从Web worker运行时,会抛出以下错误:

FileReader is not defined
Run Code Online (Sandbox Code Playgroud)

相同的代码在Chrome和Safari中运行良好.

在Firefox中支持Web worker的FileReader的任何建议?

javascript firefox filereader web-worker fileapi

6
推荐指数
1
解决办法
3393
查看次数

JavaScript中的FileReader #readEntries可以读取的目录的最大文件数

我正在创建一个Chrome应用程序.我必须读取目录的文件,我正在使用DirectoryEntry APIDirectoryReader API.

我的问题是使用DirectoryReader #readEntries读取的最大文件数是100,前100个(字母顺序)

var reader = currentDir.createReader();
var read = reader.readEntries.bind(reader, function(files) {
    for ( var i = 0; i < files.length; i++){
         if (files[i].name == nameSearches){
                callback(files[i]);
            }

        }
    })
    callback(undefined)
}
read();
Run Code Online (Sandbox Code Playgroud)

files.lengthis 的值是100,目录中有更多文件

我不确定这个限制是关于谷歌浏览器,谷歌Chrome应用程序,Javascript ......以及是否可以克服此限制

随着解决方案标记结果代码是这样的:

var reader = currentDir.createReader();
var read = reader.readEntries.bind(reader, function(files) {
    if (files.lenght == 0) {
        callback(undefined);
    }
    for ( var i = 0; i < files.length; i++){
        if (files[i].name == nameSearches){
                callback(files[i]); …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension fileapi google-chrome-app

6
推荐指数
1
解决办法
2055
查看次数

如何在Webkit浏览器中访问粘贴的文件?(作为Google Chrome浏览器)

如果能够在Stack Exchange上将图像粘贴到此处而不是干预文件对话框,那将非常方便。此处已实现了类似功能,但仅适用于Webkit浏览器

我正在开发可以做到这一点的用户脚本。有趣的是,在Webkit浏览器中,我从未从剪贴板中获取文件(与原始图像数据不同),而在Firefox中却可以。

Firefox解决方案:

  div.addEventListener('paste', function(event){
    //I'm actually not sure what should event.originalEvent be. I copypasted this
    var items = (event.clipboardData || event.originalEvent.clipboardData);
    console.log("paste", items);
    //Try to get a file and handle it as Blob/File
    var files = items.items || items.files;
    if(files.length>0) {  
      //Being lazy I just pick first file
      var file = files[0];
      //handle the File object
      _this.processFile(file);

      event.preventDefault();
      event.cancelBubble = true;
      return false;
    }
  });
Run Code Online (Sandbox Code Playgroud)

在Chrome没有像Firefox一样好的文档(我的意思是MDN)之前,我试图检查正在发生的事情。我复制了一个文件,并将其粘贴到Google chrome(v39)中。这是我DataTransfer在控制台中获得的对象:

粘贴事件Google chrome

供参考,这是Firefox中的同一事件:

粘贴事件文件Firefox

另外两个阵列,items …

javascript google-chrome paste fileapi

6
推荐指数
1
解决办法
1686
查看次数