Wie kann ich den Wert davon festlegen?
Und was ist, wenn ich den Wert der Dateieingabe auf einen generierten Inhalt (nicht von der Festplatte) setzen möchte?
Wie kann ich den Wert davon festlegen?
Sie können es nicht auf einen Pfad des Dateisystems eines Client-Seitendisks setzen, aus Sicherheitsgründen.
Stellen Sie sich vor:
document.foo.submit();
Sie möchten nicht, dass die von Ihnen besuchten Websites dies tun können, oder? =)
Sie können es nur auf eine öffentlich zugängliche Webressource setzen, wie in dieser Antwort zu sehen ist, aber dies ist klarerweise nicht dasselbe wie ein Pfad des Dateisystems eines Client-Seitendisks und daher in diesem Zusammenhang nutzlos.
Und was ist, wenn ich den Wert der Dateieingabe auf einen generierten Inhalt (nicht von der Festplatte) setzen möchte?
@EugeneMala: Der Wert des Datei-Eingabe ist eine Datei, die der Benutzer ausgewählt hat. Sie können keinen anderen Inhalt in den Wert einfügen.
Keine Antwort auf Ihre Frage (die andere bereits beantwortet haben), aber wenn Sie die Bearbeitungsfunktion eines hochgeladenen Dateifeldes haben möchten, was Sie wahrscheinlich tun möchten, ist:
Ich denke, das ist das, was ich brauche. Wenn ich Produktinformationen bearbeiten möchte (das Produktbild nicht ändern möchte), wie sollte ich auf das vorhandene Produktbild setzen? Ich kann das vorhandene Bild in einem Tag anzeigen, aber beim Absenden wird keine Datei übermittelt.
Ich habe ein vollständiges Beispiel zum Laden von URLs in eine Eingabedatei und Vorschau geschrieben Sie können hier überprüfen 1 https://vulieumang.github.io/vuhocjs/file2input-input2file/
kurz gesagt, Sie können diese Funktion verwenden
function loadURLToInputFiled(url){
getImgURL(url, (imgBlob)=>{
// Laden Sie den Bildblob in die Eingabe
// WIP: UTF8-Zeichenfehler
let fileName = 'hasFilename.jpg'
let file = new File([imgBlob], fileName,{type:"image/jpeg", lastModified:new Date().getTime()}, 'utf-8');
let container = new DataTransfer();
container.items.add(file);
document.querySelector('#file_input').files = container.files;
})
}
// xmlHTTP gibt blob-Antwort zurück
function getImgURL(url, callback){
var xhr = new XMLHttpRequest();
xhr.onload = function() {
callback(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
Das ist ein wunderschönes Design des Codes. Ich kann das sogar mit data:image verwenden, was für meinen Verwendungszweck erstaunlich ist. Frage: Ist es schwer, deinen Code so zu bearbeiten, dass er mehrere Bild-URLs zulässt? Das wäre großartig! Freue mich auf deine Antwort und vielleicht eine Bearbeitung, um haha einzuschließen.
Das ist verrückt, die ersten 4 Antworten behaupten, dass es nicht möglich ist (mit mehr als 600 Stimmen), während diese Antwort es so elegant macht, es hat so gut für meinen Anwendungsfall funktioniert
@aussiedan, bedeutet das, dass du mehrere Bild-Urls in eine Eingabe laden möchtest oder in mehrere Eingaben?
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Ich habe hier eine vollständige, referenzierte und auf dem neuesten Stand (Dezember 2013) Antwort dazu verfasst: Remember and Repopulate File Input
1 Stimmen
1) Das Problem mit dem Standardwert bei einer Dateieingabe wird NICHT "aus Sicherheitsgründen" gemacht, sondern die Browser "scheiterten einfach daran, es auszuführen, ohne guten Grund": siehe diesen ausführlichen Bericht 2) Eine einfache Lösung kann sein, einen Texteingabe über die Dateieingabe zu platzieren, wie hier. Natürlich benötigen Sie etwas Code, um die Datei zu senden, wobei jetzt der Wert in der Texteingabe und nicht in der Dateieingabe verwendet wird. In meinem Fall, da ich eine HTA-Anwendung erstelle, ist das kein Problem, da ich überhaupt kein Formular verwende.