簡體   English   中英

如何使用javascript中的輸入類型文件獲取文件的完整路徑?

[英]How to get full path of file using input type file in javascript?

我想使用jquery + javascript為電子郵件實現附件功能,例如Gmail。

因此,我使用輸入類型的文件來選擇文件-該文件僅提供文件名,而不提供文件所在位置的完整路徑。 我想要文件的完整路徑,以便將文件轉換為字節,然后將帶有文件字節的ajax請求發送到服務器。 我用這個:

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

但是filePath var僅包含所選文件的名稱,而不包含完整路徑。 我在網上搜索了它,但出於安全原因,似乎瀏覽器(FF,chrome)僅提供文件名。

謝謝。

不用了 相信我。

最好的選擇Javaranch:“文件上傳方法”

那是不可能的。 如果可能的話,我可以通過操縱您的上傳字段來訪問硬盤上的任何文件。 無論如何,您為什么需要它?

正如您已經提到的,許多瀏覽器只是不允許您這樣做。 那就是: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中提交表單。 Google似乎使用每個消息唯一的標識符(在示例中命名為compose_mail_identifier )將附件與電子郵件進行匹配。 這樣,附件和郵件將以不同的形式處理,並且僅在您單擊“發送”時才合並到電子郵件中。

您將無法以這種方式破壞文件,因為它破壞了瀏覽器強制執行的基本安全規則。 我喜歡使用的一個技巧是創建一個無邊框的iframe來容納一個上傳表單。 然后,如果您決定將附件的記錄插入數據庫,則應該可以上傳文件並使用文件名和某種ID將其發布回父窗口。 我使用iframe是因為它模仿了您希望在現代Web應用程序中實現的類似“ AJAX”的行為。

幾天前,我創建了一個類似的電子郵件附件解決方案。 這並不像您希望的那么簡單,所以是的,簡短的答案是您將需要付出更多的工作和思考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM