【问题标题】:How to get full path of file using input type file in javascript?如何在javascript中使用输入类型文件获取文件的完整路径?
【发布时间】:2010-11-22 18:46:52
【问题描述】:

我想使用 jquery+javascript 实现电子邮件的附件功能,就像 Gmail 一样。

所以我使用输入类型文件来选择文件——它只给出文件的名称,而不是它所在的文件的完整路径。我想要文件的完整路径,以便将文件转换为字节,然后使用文件字节向服务器发送 ajax 请求。我用这个:

<input type="file id="fileUpload">
var filePath=$('#fileUpload').val(); 

filePath var 仅包含所选文件的名称,而不包含完整路径。我在网上搜索过,但出于安全原因,浏览器(FF、chrome)似乎只给出了文件名。

谢谢。

【问题讨论】:

  • 您的问题是关于完整的文件路径。但在我看来,您实际上想要上传文件。为此,您可以在 JQuery File Upload 上进行谷歌搜索。
  • 是的,我想要文件在客户端的位置
  • 我想实现与带有电子邮件的 gmail 附件相同的功能
  • @Sonal Patil:作为记录,GMail 的 Web 界面在 Chrome 或 FF 中打开时也不会显示完整路径 - 即使是强大的 Google 也不能免除此功能。
  • 看来您是要上传附件而不重新加载页面,对吧?他们没有为此使用 AJAX,它只是一个 IFRAME - 而且您也不需要完整的文件路径。编辑了我的答案以反映这一点。

标签: java javascript jquery jsp file-upload


【解决方案1】:

你不需要它。相信我。

你最好的选择,Javaranch: File Upload How-to

【讨论】:

  • 这并不能真正解决任何问题。我正在做一个基于浏览器的离线应用程序,需要在其中插入图像 - 但没有办法,因为我“不需要它”请不要鼓吹愚蠢
【解决方案2】:

正如您已经指出的,许多浏览器不允许您这样做。那是 1) 一件好事(安全和诸如此类的东西),2) 正确答案(没有办法强迫他们给出完整的路径,没有一些漏洞利用)。很抱歉您不喜欢它,但这不太可能使答案有所不同。

更积极的一点是,可以使用一些 Flash 或 Java 小程序来访问本地文件(例如 Uploadify),但随后用户需要允许其权限提升。

编辑:我检查了 GMail 的功能,您可能想要一些与您的问题完全不同的东西:它使用巧妙伪装的 iframe(无边框,相同背景,看起来像页面的一部分),其中包含一个小表单用于文件上传。简化:

<form id="main_mail_form">
  <input type="hidden" name="compose_mail_identifier" value="id_beef-cafe">
  <!-- buttons and previous form fields - subject, to, cc -->
  <iframe src="attachments?for_message=id_beef-cafe">
  <!-- note that we're passing      ^^^^^^^^^^^^ the same identifier here -->
  </iframe>
  <!-- other form fields and buttons -->
</form>

在 iframe 内:

<form id="attachment_mail_form">
  <input type="hidden" name="compose_mail_identifier" value="id_beef-cafe">
  <!-- ^^ note that this has the same value as the main form -->
  <input type="file">
  <!-- other form elements -->
</form>

当您向邮件添加附件时,您只是在 iframe 中提交表单。谷歌似乎使用一些每个消息唯一的标识符(在示例中命名为compose_mail_identifier)将附件与电子邮件匹配。这样,附件和邮件就以不同的形式处理,只有在点击“发送”时才合并为一封电子邮件。

【讨论】:

    【解决方案3】:

    那是不可能的。如果这是可能的,我可以通过操作您的上传字段来访问您硬盘上的任何文件。无论如何,你为什么需要它?

    【讨论】:

    • 我想为电子邮件附加文件
    • @Sonal Patil:您是否在客户端发送电子邮件?如果没有,您仍然需要上传该文件(不需要完整路径)。
    【解决方案4】:

    您将无法以这种方式访问​​该文件,因为它违反了您的浏览器强制执行的基本安全规则。我喜欢使用的一个技巧是创建一个没有边框的 iframe,其中包含一个上传表单。然后,如果您决定将附件的记录插入数据库,您应该能够上传文件并使用文件名和某种 id 回发到父窗口。我使用 iframe 是因为它模仿了您希望在现代 Web 应用程序中实现的那种类似“AJAX”的行为。

    几天前我创建了一个类似的电子邮件附件解决方案。它并不像您希望的那么简单,所以简短的回答是您将不得不投入更多的工作和思考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多