Nota:
As respostas e comentários abaixo refletem o estado dos navegadores herdados em 2009. Agora você pode realmente definir o valor do elemento de entrada de arquivo de forma dinâmica / programática usando JavaScript e um objeto dataTransfer ou FileList em 2017.
Veja a resposta nesta pergunta para obter detalhes e também uma demonstração:
Como definir o valor de entrada do arquivo programaticamente (por exemplo: ao arrastar e soltar arquivos)?
Como posso definir o valor disso?
<input type="file" />
javascript
html
file-upload
preset
Alon Gubkin
fonte
fonte
Respostas:
Você não pode devido a razões de segurança.
Imagine:
Você não quer que os sites que você visite possam fazer isso, não é? =)
fonte
Você não pode.
A única maneira de definir o valor de uma entrada de arquivo é pelo usuário selecionar um arquivo.
Isso é feito por razões de segurança. Caso contrário, você poderá criar um Javascript que carrega automaticamente um arquivo específico do computador do cliente.
fonte
Não é uma resposta para sua pergunta (que outras pessoas responderam), mas se você deseja ter alguma funcionalidade de edição de um campo de arquivo enviado, o que você provavelmente deseja fazer é:
<input>
tag para fazer upload de um novo arquivofonte
<input type="file" />
a imagem do produto existente? Posso mostrar a imagem existente em uma<img />
tag, mas quando envio não está passando o arquivo.Você não pode. E é uma medida de segurança. Imagine se alguém escreve um JS que define o valor de entrada do arquivo em algum arquivo de dados confidenciais?
fonte
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 ...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.fonte
1) O problema do valor padrão em uma entrada de arquivo NÃO é "resolvido por motivos de segurança", mas os navegadores "apenas falharam em implementá-lo, sem uma boa razão": consulte este relatório detalhado
2) Uma solução simples pode ser usar uma entrada de texto em cima da entrada de arquivo, como aqui . Claro que você precisa de algum código para enviar o arquivo, usando agora o valor na entrada de texto e não na entrada do arquivo.
No meu caso, fazer um aplicativo HTA, isso não é um problema, não uso o formulário.
fonte
Defina em html:
Em JS:
Depois de:
fonte
Na verdade, nós podemos fazer isso. podemos definir o valor padrão do arquivo usando o controle de navegador da web em c # usando a biblioteca FormToMultipartPostData. Temos que baixar e incluir essa biblioteca em nosso projeto. O Navegador da Web permite ao usuário navegar em páginas da Web dentro do formulário. Depois que a página da web for carregada, o script dentro do webBrowser1_DocumentCompleted será executado. Assim,
Consulte o link abaixo para fazer o download e a referência completa.
https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com
fonte