0

通常只是做FileReader.read...错误并弹射错误将是(异步)方式。

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

  • 可以是这样的吗(在伪代码中;基于此 SO 帖子
  • 它可以在不实际读取整个文件的情况下返回 true 吗?

    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. XMLHttpRequest.send()由于某种原因,Chrome(25) 似乎没有在这里设置错误,愉快地发布文件,但如果文件不可读,则会默默地截断为 0 字节。所以我想事先自己检查一下,作为一种解决方法。

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

4

0 回答 0