html5获取文件路径
使用html5 javascript时,如何在用户选择文件时获取文件路径? 我需要在这个例子中使用的文件路径:html5获取文件路径
用户上传一个文件,暂停它(我知道迄今为止我认为只有mozilla可以做到这一点),然后关闭浏览器并计划恢复文件明天。我需要知道这个文件的文件路径。
即使你确实有一个路径(一些浏览器用来给你),也没有办法设置类型文件的输入路径。
因此,不可能用普通的JS和DOM来做你想做的事情。
我说这是不可能的,但现在你问我确实认为有一种方法,用新的File API。以下步骤概述了需要完成的工作,但没有经过测试,我不指望它能够工作,只是为了向您展示方式,全局变量也很糟糕,它只是向您展示您的最简单方法。这里是举例一个很好的页面上使用File API http://www.html5rocks.com/en/tutorials/file/dndfiles/
首先您需要的文件类型的输入,那么你可以一旦用户选择一个文件使用,您将得到对文件的访问对象。 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接口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请求通过该斑点对服务器的访问,跟踪多少上传完成。 http://www.w3.org/TR/XMLHttpRequest/#the-upload-attribute。它看起来不像跟踪进度可以在客户端上完成。您可能必须轮询服务器以获取实际进度。知道从何处开始中断上传的一种可能的解决方案是使用上传ID,并且当您重新启动上传时,可以询问服务器上传了多少文件。
对不起,我不能提供完整的答案,但这不是一个简单的问题。我给你的步骤应该带你走向正确的方向。
@JuanMendes ..所以有无论如何做这个暂停/恢复功能,除了使用Java /闪存?我认为HTML5具有FileAPI,所以我认为我们可以通过html – Harts 2012-02-15 21:34:36
@ user1096900来完成。看看我修改后的答案。 – 2012-02-16 00:00:58
就像你不能在几天内提交一个HTTP请求一样,你也不能用文件上传来完成。该协议不会允许它。因此,整个努力是徒劳的。
但我们可以欺骗它吗?使用HTML5 File API中的片段上传部分 – Harts 2012-02-15 21:29:20
HTML5的强大功能将永远无法覆盖HTTP指向的内容。该协议由服务器设置,而不是客户端。 – 2012-02-15 21:32:55
据我所知,这是不可能的,因为Javascript只能访问通过file
输入或拖放共享的文件。
不管怎样,你将无法重新启动文件上传。 – ceejayoz 2012-02-15 21:18:46
是否有任何其他的编程语言,能够重新启动文件上传除了java .. – Harts 2012-02-15 21:25:56
任何可以做到这一点的东西都必须有某种插件。 – ceejayoz 2012-02-15 22:18:41