Như mọi người khác ở đây đã tuyên bố: Bạn không thể tải lên tệp tự động bằng JavaScript.
TUY NHIÊN! Nếu bạn có quyền truy cập vào thông tin bạn muốn gửi trong mã của mình (nghĩa là không phải mật khẩu.txt), thì bạn có thể tải nó dưới dạng blob -type, sau đó coi nó như một tệp.
Những gì máy chủ sẽ nhìn thấy sẽ không thể phân biệt được với một người thực sự thiết lập giá trị của <input type="file" />
. Cuối cùng, mẹo là bắt đầu một XMLHttpRequest () mới với máy chủ ...
function uploadFile (data) {
// define data and connections
var blob = new Blob([JSON.stringify(data)]);
var url = URL.createObjectURL(blob);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'myForm.php', true);
// define new form
var formData = new FormData();
formData.append('someUploadIdentifier', blob, 'someFileName.json');
// action after uploading happens
xhr.onload = function(e) {
console.log("File uploading completed!");
};
// do the uploading
console.log("File uploading started!");
xhr.send(formData);
}
// This data/text below is local to the JS script, so we are allowed to send it!
uploadFile({'hello!':'how are you?'});
Vì vậy, những gì bạn có thể có thể sử dụng này để làm gì? Tôi sử dụng nó để tải lên các yếu tố canvas HTML5 dưới dạng jpg. Điều này giúp người dùng tránh được sự cố khi phải mở một file
input
phần tử, chỉ để chọn hình ảnh cục bộ, được lưu trong bộ nhớ cache mà họ vừa thay đổi kích thước, sửa đổi, v.v. Nhưng nó sẽ hoạt động với mọi loại tệp.