【问题标题】:Writing the full path of the file when it is browsed using php使用php浏览文件时写入文件的完整路径
【发布时间】:2015-10-14 16:02:26
【问题描述】:

到目前为止,我编写了一个脚本,以便我可以浏览文件并查看文件的打印名称。这是脚本:

 <form action="upload.php" method="post" enctype="multipart/form-  data">
 Select: 
 <input type="file" name="fileToUpload" id="fileToUpload">
 </form>

当我点击浏览按钮并选择一个文件时,只有文件的名称会打印在我的网页上(我的网络浏览器是 Firefox,我使用的是本地服务器)。有没有办法打印文件的整个地址?到目前为止,我在网上找到的主要是我们提前知道“/path/to/file”时的建议方式。但是如果我随机选择一个文件怎么办?如果由于安全问题无法使用 PHP 执行此操作,请根据:

How to get full path of selected file on change of <input type=‘file’> using javascript, jquery-ajax?,

是否可以用 C、C++、html 等来做?

我真的需要显示目录的本地路径。有哪些替代方案?答案是做不到?我找到了这个网站http://www.htaccesstools.com/articles/full-path-to-file-using-php/

但不知道它是如何工作的。

另一种选择是定义一个固定路径,让用户只选择那个目录,因为它是已知的,我可以打印出来。有意义吗?

【问题讨论】:

  • 每个浏览器都不同。可能有办法做到这一点,但这会很困难,并且可能需要针对不同浏览器的不同解决方案。它有多重要?
  • “文件的整个地址”是指本地路径吗?
  • 还有一个安全问题:stackoverflow.com/questions/15201071/…
  • 是本地路径,浏览器是firefox。
  • 由于安全问题不显示。此外,Chrome 显示C:\fakepath\filename.ext

标签: javascript php html c++


【解决方案1】:

过去的旧浏览器允许不受限制地访问完整路径,因此这并非不可能,但出于安全考虑,您最好的答案将是一种解决方法。


Internet Explorer


HTA 应用程序

如果您在本地工作,一种选择是您可以将页面作为 HTML 应用程序运行。遗憾的是,它使用 Internet Explorer 作为引擎。但是,如果您可以摆脱 HTA,这就是您想要的:

<!--test.hta-->
<HTML>
<HEAD>
<HTA:APPLICATION ID="testFile" BORDER="thick" BORDERSTYLE="complex"/>
<TITLE>HTA - Test file</TITLE>
</HEAD>
<BODY>
<input type="file" onchange="alert(this.value)">
</BODY>
</HTML>

可信站点

更好的选择是简单地使用 Internet Explorer,然后将您的页面添加到 Internet Explorer 的受信任站点。那么你的解决方案很简单:

&lt;input type="file" id="fileUpload" onchange="alert(this.value)"&gt;

以下是将网站添加到受信任网站的方法:

自定义安全级别

您还可以为 Internet Explorer 全局启用此行为:


火狐


Firefox 似乎不支持获取完整 URL。但正如提到的here 似乎确实存在一个“mozFullPath”属性:
https://developer.mozilla.org/en-US/docs/Web/API/File/mozFullPath

我在浏览器中尝试过,它似乎是一个不存在的属性。我在任何地方都找不到有关如何利用此属性的任何文档。但它是一个值得留意的属性,以防它变得有用。


HTML5


在 HTML5 中,您可以编写 this.files[0] 来引用 File 对象。属性包括此处提到的“名称”和“lastModifiedDate”、“大小”和“类型”: https://developer.mozilla.org/en-US/docs/Web/API/File

在 HTML5 中,您实际上可以使用 blob 并从所选文件创建对象 url 并显示预览。这可以通过URL.createObjectURL(...) 完成,然后创建一个图像并将其src 设置为生成的临时网址。见this fiddle.(credit goes to this post)

最后,你可能会非常喜欢:

https://blueimp.github.io/jQuery-File-Upload/

【讨论】:

  • 油漆也有形状......一支铅笔就在那儿>
【解决方案2】:

没有办法做到这一点,因为显示是由浏览器控制的。有些浏览器会显示整个路径,而有些浏览器只会显示文件名。

【讨论】:

  • 虽然我认为它也没有显示文件路径。
【解决方案3】:

出于安全原因,您可以这样做。 Javascript 无权访问文件系统,看看这个答案:How to get full path of selected file on change of <input type=‘file’> using javascript, jquery-ajax?

【讨论】:

    【解决方案4】:

    我确实遇到了同样的问题,但不是在同样的情况下。只有 IE10 给了我完整的路径,而 firefox(可能所有其他的)没有。就我而言,我使用带有 php 的服务器,所以我要求用户选择文件并将其上传到服务器上,以便根据需要使用它。我希望它有所帮助。

    【讨论】:

      【解决方案5】:

      这似乎你想要你的文件的完整路径。 请尝试使用:__FILE__

      【讨论】:

      • 这应该是一条评论。由于您没有足够的声誉,请尝试通过提供有效答案或提出相关问题来赚取更多。
      【解决方案6】:

      使用 JavaScript 和隐藏字段可以做到这一点:

      $('#someHiddenField').val( $('#myFileField').val() );
      

      但请记住,并非所有浏览器都返回完整路径(特别是 FF 只返回文件名)。

      【讨论】:

        【解决方案7】:

        获取客户端文件到服务器端的完整路径是暴露客户端文件系统访问权限的事情。这是不允许的,因为有几个安全原因。

        【讨论】:

          【解决方案8】:

          您需要更改浏览器的设置,然后才能访问文件的相对路径。

          Chrome 您将使用 this.files[0].webkitRelativePath

          获得真实路径

          FirFox 您将使用 this.files[0].mozFullPath

          【讨论】:

            猜你喜欢
            • 2019-06-11
            • 2015-01-21
            • 1970-01-01
            • 2020-12-31
            • 2015-06-15
            • 1970-01-01
            • 1970-01-01
            • 2012-04-19
            • 1970-01-01
            相关资源
            最近更新 更多