Como todos os outros aqui declararam: Você não pode enviar um arquivo automaticamente com JavaScript.
CONTUDO! Se você tiver acesso às informações que deseja enviar no seu código (por exemplo, não passwords.txt), poderá enviá-las como um tipo de blob e tratá-las como um arquivo.
O que o servidor acabará vendo será indistinguível de alguém realmente configurando o valor de <input type="file" />
. O truque, em última análise, é iniciar um novo XMLHttpRequest () com o servidor ...
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?'});
Então, para que você poderia usar isso? Eu o uso para fazer upload de elementos de tela HTML5 como jpg. Isso evita que o usuário tenha que abrir um file
input
elemento, apenas para selecionar a imagem em cache local que eles acabaram de redimensionar, modificar, etc. Mas deve funcionar para qualquer tipo de arquivo.