2009-06-19 165 views
64

有沒有方法可以設置文件輸入的值(<input type="file" />)還是全部被安全阻止?我正在嘗試使用谷歌齒輪的openFiles來製作一個簡單的多上傳器。動態設置文件輸入的值

注:

答案(S)下面反映的2009年舊版瀏覽器現在你居然能在2017年

設置文件輸入元素的值動態/編程使用JavaScript狀態

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

+1

我敢肯定,你是對的,文件輸入字段是隻讀的。 – 2009-06-19 10:03:13

+3

我在這裏做了一個完整的引用和最新的(2013年12月)回答:[記住和重新輸入文件輸入](http://stackoverflow.com/a/20537822/588079) – GitaarLAB 2013-12-16 03:25:09

+1

重新打開。 62 + 62 upvotes(更不用說+15書籤)意味着比某人的某些奇怪的意見更多 – Green 2017-07-03 21:10:40

回答

65

這是不可能的DYNA可以更改文件字段的值,否則可以將其設置爲「c:\ yourfile」並非常容易地竊取文件。

但是,對於多上傳系統有很多解決方案。我猜你想要有一個多選擇的開放式對話框。

也許看看http://www.plupload.com/ - 這是一個非常靈活的解決方案,以多個文件上傳,並支持拖放區e.t.c.

0

我有類似的問題,然後我試着從JavaScript寫這個,它的工作原理! :referenceToYourInputFile.value = "" ;

2

我正在研究一個角度js應用程序,並且需要解決類似的問題。我所做的是從數據庫中顯示圖像,然後創建一個按鈕來刪除或保留當前圖像。如果用戶決定保留當前圖像,我將ng-submit屬性更改爲另一個不需要圖像驗證的功能,並更新了數據庫中的記錄,而無需接觸原始圖像路徑名稱。刪除圖像功能還將ng-submit屬性值更改回提交表單幷包含圖像驗證和上傳的功能。還有一點javascript可以將視圖上傳到新視圖中。

-1

我落得這樣做的情況下,這樣的事情對AngularJS過這個問題,有人絆倒:

const imageElem = angular.element('#awardImg'); 

if (imageElem[0].files[0]) 
    vm.award.imageElem = imageElem; 
    vm.award.image = imageElem[0].files[0]; 

然後:

if (vm.award.imageElem) 
    $('#awardImg').replaceWith(vm.award.imageElem); 
    delete vm.award.imageElem;