【问题标题】:html5 get file pathhtml5获取文件路径
【发布时间】:2012-02-15 21:18:17
【问题描述】:

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

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

【问题讨论】:

  • 无论如何,您将无法重新启动文件上传。
  • 除了 java 之外,还有没有其他能够重新上传文件的编程语言..
  • 任何可以做到这一点的东西都必须有某种插件。

标签: php javascript html


【解决方案1】:

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

因此,用普通的 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>

第二 现在您将内容作为二进制字符串。您可以使用 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,当您重新开始上传时,您会询问服务器已经上传了多少文件。

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

【讨论】:

  • @JuanMendes.. 那么除了使用 java / flash 之外,还有什么方法可以执行此暂停/恢复功能吗?我认为 HTML5 有 FileAPI 所以我认为我们可以通过 html
  • @user1096900 看看我修改后的答案。
【解决方案2】:

就像您无法在几天内分段提交 HTTP 请求一样,您也无法通过文件上传来完成。协议只是不允许它。因此,所有的努力都是徒劳的。

【讨论】:

  • 但是我们可以欺骗它吗?使用 html5 File API 中的切片逐段上传
  • HTML5 一如既往的强大,但永远无法覆盖 HTTP 指示的内容。协议由服务器设置,而不是客户端。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 2011-11-16
    • 2021-09-10
    • 2012-03-25
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多