如何在Javascript中实现is_readable(file)?

时间:2013-05-31 00:37:50

标签: javascript filereader file-access

通常只做FileReader.read...并弹出错误就是(async。)方式。

但在某些情况下,只需在启动实际传输之前同步检查访问权限可能会更好(参见下面的示例)。

  • 可以是这样的(伪代码;基于this SO post
  • 如果没有实际读取整个文件,它能否返回?

    function is_readable(file) { // File object
        var ok = null
    
        function check(e) {
            ok = (SOME.ERROR.CONDITION.HERE ? false : true) // perhaps: e.target.result?
        }
    
        var blob = file.slice(0, 1) // does slice() make any sense here?
        var reader = new FileReader()
    
        // not sure which events to buy:
        reader.onload = check
        reader.onerror = check
    
        reader.readAsArrayBuffer(blob)
    
        // sync here for the result:
        while (ok === null) {
            alert('...waiting...')
        }
    
        return ok
    }
    

示例案例:

  1. 对于批量上传(选择具有多文件INPUT的文件,并且在按下“全部上传”按钮之前不发送它们),您希望以红色列出不可读的文件。为此,在列表构建器循环中,您只需为每个File对象f选择颜色,例如is_readable(f) ? 'green' : 'red'

  2. 由于某种原因,Chrome(25)似乎在XMLHttpRequest.send()期间没有设置错误,很高兴发布文件,但默默地将截断为0字节,如果文件不可读。所以我想事先检查一下,作为一种解决方法。

  3. (注意:我检查了php.js,但似乎没有这个。)

0 个答案:

没有答案