我编写了以下代码来使用 HTML5 文件 API 检查上传的文件是否存在。
<input type="file" id="myfile">
<button type="button" onclick="addDoc()">Add Document</button>
<p id="DisplayText"></p>
以下 JavaScript 代码已映射到它,如下所示:
function addDoc() {
var file=document.getElementById("myFile").files[0]; //for input type=file
var reader=new FileReader();
reader.onload = function(e) {}
reader.readAsText(file);
var error = reader.error;
var texte=reader.result;
document.getElementById("DisplayText").innerText=reader.result; /*<p id="DisplayText>*/
}
从本地系统浏览文件后,我尝试在单击 addDoc()
之前从文件夹中删除“已浏览”文档。单击按钮后我仍然可以看到 Filereader.result
不为空并且可以显示所有内容。
有人可以解释 Filereader 是如何工作的吗?文件浏览器是否在浏览文件后 立即 绑定?
也可以看看系统的 Readonly Attribute是否有类似于Java的 FileReader File.canread()
?
有人可以对此提出建议吗?我有 IE11 来测试代码。
原文由 sushmithaP 发布,翻译遵循 CC BY-SA 4.0 许可协议
FileReader
load
事件异步设置.result
值。要访问.result
使用load
或loadend
事件。When a file has been selected at
<input type="file">
Choose File
orBrowse...
UI, deleting file at local filesystem should not effect theFile
object atFileList
由.files
调用返回。见 2.9.2。可传输对象, 6.7.3 DataTransfer 接口。在 webkit 和 firefox 浏览器中选择只读文件或文件夹
在 chrome 中,如果在本地文件系统中为文件设置了只读权限并且用户在
<input type="file">
元素中选择文件,其中FileReader
用于读取文件,则会抛出错误FileReader
,从FileReader
progress
事件生成。如果
Blob URL
设置为相同的文件对象,则blob:
URL 将不会在请求时返回只读文件Blob URL
选择文件夹权限设置为只读的文件夹
铬,铬
At chrome, chromium where
webkitdirectory
attribute is set and folder is selected with read-only permissionFileList
.length
ofevent.target.files
returned0
;event.target.files.webkitGetAsEntry()
不被调用,"No file chosen"
在<input type="file">
shadowDOM
When a folder is dropped at<input type="file">
or element wheredroppable
attribute set, the directory.name
and.path
of the read-only folder is显示在drop
event.dataTransfer
。当用户将文件或文件夹放在
<textarea>
元素时,其中没有drop
附加事件beforeunload
在 UI prompr 上显示事件并调用“file:///home/user/Documents/Document/MyFileFullPathDisplayedAtTextAreaValue.txt”
“file:///home/user/Documents/Document/MyFileFullPathDisplayedAtTextAreaValue1.txt” “file:///home/user/Documents/Document/MyFileFullPathDisplayedAtTextAreaValue2.txt” ..
NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
Error: Access to ‘“file:///home/user/Documents/Document/MyFileFullPathDisplayedAtTextAreaValue.png”’ from script denied
data:text/html,
<!DOCTYPE html>
<!DOCTYPE html>
“`