html5获取文件路径

时间:2012-02-15 21:18:18

标签: php javascript html5

使用html5 javascript,当用户选择文件时,如何获取文件路径? 我需要在此示例中使用的文件路径:

用户上传文件,暂停它(我知道到目前为止我认为只有mozilla可以这样做),然后关闭浏览器并计划在第二天恢复该文件。我需要知道这个文件的文件路径..

3 个答案:

答案 0 :(得分:8)

即使您确实有路径(某些浏览器用于提供给您),也无法设置文件类型输入的路径。

因此,使用普通JS和DOM无法做到你想做的事。

我说这是不可能的,但现在你问我确实有办法,使用新的File 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>

现在您将内容作为二进制字符串。您可以使用File 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请求,将该blob传递给服务器,跟踪完成上传的内容。 http://www.w3.org/TR/XMLHttpRequest/#the-upload-attribute。它看起来不像在客户端上可以进行跟踪进度。您可能需要轮询服务器以获取实际进度。知道从何处开始中断上传的可能解决方案是上传ID,当您重新启动上传时,您会询问服务器已上载了多少文件。

抱歉,我无法提供完整的答案,但这不是一个简单的问题。我给你的步骤应该带你朝着正确的方向前进。

答案 1 :(得分:0)

就像你几天不能分段提交HTTP请求一样,你也无法通过文件上传来完成。该协议不允许它。因此,整个努力都是徒劳的。

答案 2 :(得分:0)

据我所知,这是不可能的,因为Javascript只能访问通过file输入或拖放共享的文件。