2009-06-19 31 views
64

Có cách nào để đặt giá trị của đầu vào tệp (<input type="file" />) hay là tất cả bị chặn để bảo mật? Tôi đang cố gắng sử dụng openFiles của google gears để tạo một trình tải lên đa đơn giản.Giá trị thiết lập động của đầu vào tệp

Lưu ý:

Câu trả lời (s) dưới đây phản ánh tình trạng của các trình duyệt di sản vào năm 2009. Bây giờ bạn thực sự có thể thiết lập giá trị của phần tử tập tin đầu vào tự động/programatically sử dụng JavaScript trong năm 2017.

Xem câu trả lời trong câu hỏi này để biết chi tiết cũng như một bản demo:
How to set file input value programatically (i.e.: when drag-dropping files)?

+1

Tôi khá chắc chắn rằng bạn là đúng và nộp lĩnh vực đầu vào chỉ đọc. –

+3

Tôi đã tham khảo đầy đủ và cập nhật (tháng 12 năm 2013) trả lời về điều này tại đây: [Ghi nhớ và Repopulate File Input] (http://stackoverflow.com/a/20537822/588079) – GitaarLAB

+1

Mở lại. 62 + 62 upvotes (chưa kể đến +15 bookmark) có nghĩa là nhiều hơn một số ý kiến ​​lẻ ​​của một ai đó – Green

Trả lời

65

Nó không thể DYNA mically thay đổi giá trị của một lĩnh vực tập tin, nếu không bạn có thể đặt nó vào "c: \ yourfile" và ăn cắp các tập tin rất dễ dàng.

Tuy nhiên, có nhiều giải pháp cho hệ thống đa tải lên. Tôi đoán rằng bạn đang muốn có một hộp thoại mở nhiều lựa chọn.

Có thể xem http://www.plupload.com/ - đó là giải pháp rất linh hoạt cho nhiều tệp tải lên và hỗ trợ các vùng thả e.t.c.

+1

Ai đó đã thay thế URL bằng một URL hoạt động. – JohnK

+0

Tôi nghĩ câu trả lời này đã lỗi thời. Bạn không còn có thể đặt tệp mặc định nữa vì tệp có thể được đọc qua API FileReader và được gửi bởi XHR. Thực tế là 'input.files' là chỉ đọc có lẽ là một vấn đề của di sản. –

+0

Xem xét câu hỏi là "Có cách nào để đặt giá trị của đầu vào tệp" không? Và câu trả lời nói "Không thể" .. vẫn hoàn toàn hợp lệ trả lời không? Nó phải làm gì với API FileReader hoặc XHR? – Joel

0

Tôi có vấn đề tương tự, sau đó tôi đã thử viết này từ JavaScript và nó hoạt động! : referenceToYourInputFile.value = "" ;

+4

Cách "làm việc" theo cách nào? [Mozilla Documents] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#File_inputs) tuyên bố rõ ràng, "Bạn không thể đặt giá trị của bộ chọn tệp từ tập lệnh , làm một cái gì đó như [this] không có hiệu lực " – MrWhite

+6

... ngoài _clearing_ lựa chọn tệp. – MrWhite

+2

Câu hỏi đặt ra là đặt giá trị của một đầu vào tệp, không xóa nó. –

2

Tôi đang làm việc trên ứng dụng js góc và andhavecome trên một vấn đề tương tự. Những gì tôi đã làm là hiển thị hình ảnh từ db, sau đó tạo ra một nút để loại bỏ hoặc giữ hình ảnh hiện tại. Nếu người dùng quyết định giữ hình ảnh hiện tại, tôi đã thay đổi thuộc tính ng-submit thành một hàm khác mà không yêu cầu xác nhận hình ảnh và cập nhật bản ghi trong db mà không chạm vào tên đường dẫn hình ảnh ban đầu. Chức năng xóa hình ảnh cũng thay đổi giá trị thuộc tính ng-submit trở lại một hàm gửi biểu mẫu và bao gồm xác nhận hình ảnh và tải lên. Ngoài ra một chút javascript để trượt vào xem để tải lên một hình ảnh mới.

-1

tôi đã kết thúc làm điều gì đó như thế này cho AngularJS trong trường hợp ai đó tình cờ qua câu hỏi này:

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

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

Và sau đó:

if (vm.award.imageElem) 
    $('#awardImg').replaceWith(vm.award.imageElem); 
    delete vm.award.imageElem; 
Các vấn đề liên quan