使用html5 javascript,当用户选择文件时如何获取文件路径? 我需要在此示例中使用的文件路径:
用户上传一个文件,暂停它(我知道到目前为止我认为只有mozilla可以做到这一点),然后关闭浏览器并计划第二天恢复该文件。我需要知道这个文件的文件路径..
最佳答案
即使您确实有路径(某些浏览器曾经给您提供过路径),也无法设置文件类型输入的路径。
因此,使用纯 JS 和 DOM 无法完成您想要的操作。
我说这是不可能的,但既然你问了,我确实认为有办法,使用新的文件 API。以下步骤概述了需要做什么,但从未经过测试,我不希望它起作用,它只是向您展示方法,而且全局变量也不好,这只是向您展示的最简单的方法。这是一个很好的页面,其中包含有关使用文件 API 的示例 http://www.html5rocks.com/en/tutorials/file/dndfiles/
首先您需要一个文件类型的输入,然后您可以使用,一旦用户选择一个文件,您就可以访问 File 对象。 http://dev.w3.org/2006/webapi/FileAPI/#dfn-filereader
<input type="file" id="files" name="files[]" multiple />
<script>
var fileBlobs = [];
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. You may now read their contents
var reader = new FileReader();
for (var i = 0, f; f = files[i]; i++) {
fileBlobs.push(reader.readAsBinaryString(f));
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
第二 现在您已获得二进制字符串形式的内容。您可以使用文件 API 在本地存储文件,以便稍后使用 FileWriter 和 FileSaver 接口(interface)访问 http://dev.w3.org/2009/dap/file-system/file-writer.html
var bb = new BlobBuilder();
bb.appendfileBlobs.(fileBlobs[0]);
window.saveAs(bb.getBlob(), "test_file");
第三 您需要发出一个 Ajax 请求,将该 blob 传递到服务器,跟踪上传的完成情况。 http://www.w3.org/TR/XMLHttpRequest/#the-upload-attribute 。看起来无法在客户端上跟踪进度。您可能需要轮询服务器以了解实际进度。要知道从哪里开始中断的上传,一个可能的解决方案是获取上传 ID,当您重新开始上传时,您会询问服务器已上传了多少文件。
抱歉,我无法提供完整的答案,但这不是一个简单的问题。我为您提供的步骤应该会带您走向正确的方向。
关于php - html5获取文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9301563/