代码之家  ›  专栏  ›  技术社区  ›  Posto

通过javascript上传HTML文件预览

  •  4
  • Posto  · 技术社区  · 17 年前

    我想展示一个帖子的预览类内容,所以由JS进行了详细介绍。

    但问题来了 <input type="file" ,它没有给出文件的完整路径

    前任: 如果我这样做

    $("#image").val();
    

    它只提供“sunset.jpg”而不是C:\documents and settings\all users….\sunset.jpg

    知道如何得到细节价值吗?

    5 回复  |  直到 16 年前
        1
  •  10
  •   VoteyDisciple    17 年前

    尽管,正如其他人已经指出的那样,您无法在javascript中学习到文件的完整路径,但解决问题的完全不同的方法可能仍然适用于您。

    一旦访问者选择了照片(在Gmail和其他应用程序中看到的行为),您就可以自动上传照片,这样即使访问者继续与您的页面交互,照片也会驻留在您的服务器上。在这一点上,显示预览就像从您自己的(现在是服务器端)图像副本中为自己提供一个预览一样简单。

        2
  •  1
  •   JacquesB    17 年前

    这是因为安全原因,所以您不能使用javascript从用户系统读取文件。

    如果您碰巧找到了一个解决方法,浏览器供应商可能会尽早发布安全补丁。我知道,因为在早期版本中,如果IE可以读取完整的路径,从而显示预览,至少如果文件是图像。我在CMS用户界面中使用过这个功能,但这一漂亮的功能被一个IE服务版本破坏了:-/

    一般来说,出于安全原因,文件上载控件有点像“黑匣子”。您对脚本和样式的访问非常有限。这是因为你不能在用户不知道的情况下窥探或上传文件,或者你不能用欺骗的界面欺骗用户上传文件。

        3
  •  1
  •   talentedmrjones    16 年前

    现在可以使用火狐3.6了 https://developer.mozilla.org/en/DOM/FileList

    虽然它们显示的代码在Chrome中似乎不起作用,所以我猜测甚至HTML5 JavaScript API也还没有标准化。

        4
  •  0
  •   Marius    17 年前

    这是一个安全功能。您不能在安全浏览器中更改或获取整个路径,因此您想做的事情无法完成。如果使用像Flash、Silverlight或Java这样的东西,那么它应该比较容易。

        5
  •  0
  •   gnarf    17 年前

    据我所知,没有办法用JavaScript来做你想做的事情。这是一个相当大的安全问题——在浏览器中访问文件系统。

    有一些浏览器插件(Java/Flash /Grand)可以让你做这种事情。我知道通过Gears,你可以让用户选择一个文件,然后用JS打开它来读取内容。