2009-11-08 48 views
219

注:如何將值設置爲HTML中的文件輸入?

的答案&評論下面反映的2009年的舊版瀏覽器現在,您可以使用JavaScript和數據傳遞或文件列表對象實際設置文件輸入元素的值動態/編程狀態2017年

見這個問題的詳細信息,答案以及演示:
How to set file input value programatically (i.e.: when drag-dropping files)?

如何設置這個的價值?

<input type="file" /> 
+3

我做了這個一個完整的引用和最新日期(2013年12月)答案在這裏:還記得和重新填充文件輸入(HTTP://計算器。com/a/20537822/588079) – GitaarLAB 2013-12-16 03:26:09

+2

[如何以編程方式設置文件輸入值(即:拖動文件時)?](https://stackoverflow.com/questions/47515232/how-to-set- file-input-value-programatically-ie-when-drag-dropping-files) – 2017-11-28 03:23:21

回答

381

您不能因安全原因。

試想:

<form name="foo" method="post" enctype="multipart/form-data"> 
    <input type="file" value="c:/passwords.txt"> 
</form> 
<script>document.foo.submit();</script> 

你不想你訪問能夠做到這一點的網站,你呢? =)

+0

你可以清除它嗎?它讓我感到害怕,每次我重新訪問時都會記住文件名。 Pelase請參閱http://stackoverflow.com/questions/41807471/can-i-reset-the-seletced-file-name-of-an-html-5-file-selector – Mawg 2017-01-23 13:25:35

+1

我瞭解安全問題,但不應該瀏覽器能夠區分危險的本地文件路徑和像dataUrl這樣更無害的東西?也許這是一個管道夢。 – cowlinator 2017-01-27 22:49:46

+3

怎麼樣拖ñdrop功能,沒有辦法將該文件設置爲輸入字段? – Vedmant 2017-08-19 07:46:10

26

你不能。這是一個安全措施。想象一下,如果有人寫JS將文件輸入值設置爲一些敏感數據文件?

100

你不能。

設置文件輸入值的唯一方法是由用戶選擇文件。

這是出於安全原因而完成的。否則,您將能夠創建一個自動從客戶端計算機上載特定文件的Javascript。

41

不回答你的問題(這人回答),但如果你想有一個上傳的文件領域的一些編輯功能,您可能需要做的是:

  • 顯示當前值通過只打印文件名或URL這個領域的,可點擊鏈接下載它,或者如果它是一個形象:剛剛表現出來,可能是由於縮略圖
  • <input>標籤上傳新文件
  • 複選框,當選中,刪除當前上傳的文件。請注意,沒有辦法上傳「空」文件,因此您需要類似的東西來清除該字段的值。
-3

其實我們可以做到這一點。 我們可以使用FormToMultipartPostData Library在c#中使用webbrowser控件來設置文件的默認值。我們必須下載該庫並將其包含在我們的項目中。 Webbrowser使用戶能夠在表單內導航網頁。 加載網頁後,將執行webBrowser1_DocumentCompleted中的腳本。 所以,

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     FormToMultipartPostData postData = 
      new FormToMultipartPostData(webBrowser1, form); 
     postData.SetFile("fileField", @"C:\windows\win.ini"); 
     postData.Submit(); 
    } 

請參閱下載和完整的參考下面的鏈接。

https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com

+0

歡迎您提供解決方案的鏈接,但請確保您的答案是如果沒有它:[在鏈接中添加上下文](// meta.stackexchange.com/a/8259/165483),以便您的同行用戶可以瞭解它是什麼以及它爲什麼存在,然後引用最相關的部分如果目標頁面不可用,您要鏈接的頁面。 [//只是鏈接的答案可能會被刪除。](// stackoverflow.com/help/deleted-answers) – 2017-11-29 22:02:12

+0

另請參見[如何以編程方式設置文件輸入值(即:在拖放文件時)?]( https://stackoverflow.com/q/47515232/584192) – 2017-11-29 22:02:34

相關問題