代码之家  ›  专栏  ›  技术社区  ›  Pieter Breed

是否可以从fileupload字段中记住文件名,然后通过javascript启动该文件?

  •  1
  • Pieter Breed  · 技术社区  · 15 年前

    我有一个html文件上传字段,从中读取用户指定的文件名。文件的实际内容从未上载。

    在稍后的阶段,是否可以使用此文件名信息构造链接,以便如果用户单击此链接,原始文件将被启动到新的浏览器窗口中?如果没有,为什么不允许这种行为?

    此功能的目的是存储指向映射的本地驱动器或网络共享上可用文档的链接。

    3 回复  |  直到 15 年前
        1
  •  4
  •   Andreas Bonini    15 年前

    很有可能,不是。

    T.J.的crowder答案是正确的,但请注意,在几乎所有可以工作的现代浏览器上 只有 如果您正在查看的网页(输入类型为file)本身是 file:/// .

    从你的问题来看,它似乎是某种内部公司网站,很可能会有自己的网络服务器。

        2
  •  2
  •   Pointy    15 年前

    您会注意到,在较新的web浏览器中,您的客户端代码实际上无法读取 完成 用户选择的文件的路径名。这是安全措施。ie8为您提供了某种明显伪造的目录名,而firefox和webkit浏览器只是去掉了文件名以外的所有内容。

    因此,我认为你根本做不到你想做的事。

    编辑: 来自MSDN的信息: http://msdn.microsoft.com/en-us/library/ms535128%28VS.85%29.aspx

        3
  •  2
  •   Community CDub    8 年前

    新答案

    自从安德烈亚斯 pointed out (相当亲切!)我以前的回答(如下)虽然正确,但几乎可以肯定 无用的 ,我想我会用几天前才学到的东西再试试:新的 File API 来自W3C。

    你不能充分利用这个 现在 (Firefox3.6或更高版本除外),但很快就会进入现代浏览器。它实际上允许您访问本地文件,只要用户已经为您显式地选择了该文件(通过 input type="file" 元素)。你仍然看不到他们的路,但是你 可以 打开并从浏览器中读取(是的,确实如此)。因此,您可以打开一个新窗口,打开文件,并将内容写入新窗口。这是否真的能满足您的要求是另一个问题(例如,将二进制文件写入一个新窗口会很有趣,即使文件api允许您 阅读 他们很好),但是嘿,就在那儿。

    旧答案

    (尽管你 可以 安德烈亚斯指出,除非链接所在的页面也通过 file:// 网址。所以,那就没什么用处了。)

    你应该能够使用 file:// URL 为此,例如, c:\test.txt 变成 file:///C:/test.txt . 然后链接只使用url和 target="_new" 告诉浏览器打开新窗口/选项卡的属性,例如:

    <a href='file:///C:/test.txt' target='_new'>link to test.txt</a>