Come posso impostare il valore di questo?
<input type="file" />
Come posso impostare il valore di questo?
<input type="file" />
Risposte:
Non è possibile, per motivi di sicurezza.
Immaginare:
<form name="foo" method="post" enctype="multipart/form-data">
<input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>
Non vuoi che i siti web che visiti siano in grado di farlo, vero? =)
Non una risposta alla tua domanda (a cui altri hanno risposto), ma se vuoi avere alcune funzionalità di modifica di un campo file caricato, quello che probabilmente vuoi fare è:
<input>
tag per caricare un nuovo file<input type="file" />
immagine del prodotto esistente? Posso mostrare l'immagine esistente in un <img />
tag ma quando invio non passa il file.
Come hanno affermato tutti gli altri qui: non è possibile caricare automaticamente un file con JavaScript.
PERÒ! Se si dispone di accesso alle informazioni che si desidera inviare nel codice (cioè, non passwords.txt), allora si può caricare come un blob di tipo, e poi trattarlo come un file.
Ciò che il server finirà per vedere sarà indistinguibile da qualcuno che sta effettivamente impostando il valore di <input type="file" />
. Il trucco, in definitiva, è iniziare un nuovo XMLHttpRequest () con il server ...
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?'});
Quindi, cosa potresti usare per questo? Lo uso per caricare elementi canvas HTML5 come jpg. Questo evita all'utente di dover aprire un file
input
elemento, solo per selezionare l'immagine locale memorizzata nella cache che ha appena ridimensionato, modificato, ecc. Ma dovrebbe funzionare per qualsiasi tipo di file.
1) Il problema del valore predefinito nell'input di un file NON È "fatto per motivi di sicurezza", ma i browser "non sono riusciti a implementarlo, senza una buona ragione": leggi questo rapporto approfondito
2) Una soluzione semplice può essere quella di utilizzare un input di testo sopra l'input di file, come qui . Naturalmente è necessario un po 'di codice per inviare il file, utilizzando ora il valore nell'input di testo e non l'input del file.
Nel mio caso, facendo l'applicazione HTA, non è un problema, non uso affatto il modulo.
Definisci in html:
<input type="hidden" name="image" id="image"/>
In JS:
ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
.then(function (data) {
if (data.error){
...;
}
else {
$('#image').val(data.image);
}
})
Dopo:
<input type="hidden" name="image" id="image" value="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."/>
<button type="submit">Submit</button>
In realtà possiamo farlo. possiamo impostare il valore predefinito del file usando il controllo del browser web in c # usando la Libreria FormToMultipartPostData. Dobbiamo scaricare e includere questa Libreria nel nostro progetto. Webbrowser consente all'utente di navigare nelle pagine Web all'interno del modulo. Una volta caricata la pagina Web, verrà eseguito lo script all'interno di webBrowser1_DocumentCompleted. Così,
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
FormToMultipartPostData postData =
new FormToMultipartPostData(webBrowser1, form);
postData.SetFile("fileField", @"C:\windows\win.ini");
postData.Submit();
}
Fare riferimento al collegamento seguente per il download e il riferimento completo.
https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com