439 Stimmen

Wie setzt man einen Wert für eine Dateieingabe in HTML fest?

Wie kann ich den Wert davon festlegen?

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.

33voto

HoldOffHunger Punkte 14903

Wie hier bereits jeder gesagt hat: Sie können nicht irgendeine Datei automatisch mit JavaScript hochladen.

ABER! Wenn Sie Zugriff auf die Informationen haben, die Sie in Ihrem Code senden möchten (d.h., nicht C:\passwörter.txt), können Sie diese als blob-Typ hochladen und dann als Datei behandeln.

Was der Server schließlich sehen wird, wird nicht von jemandem zu unterscheiden sein, der den Wert von tatsächlich festlegt. Der Trick besteht letztendlich darin, eine neue XMLHttpRequest() mit dem Server zu starten...

function uploadFile (data) {
        // Daten und Verbindungen definieren
    var blob = new Blob([JSON.stringify(data)]);
    var url = URL.createObjectURL(blob);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'myForm.php', true);

        // Neues Formular definieren
    var formData = new FormData();
    formData.append('someUploadIdentifier', blob, 'someFileName.json');

        // Aktion nach dem Hochladen
    xhr.onload = function(e) {
        console.log("Datei hochladen abgeschlossen!");
    };

        // Hochladen durchführen
    console.log("Datei hochladen gestartet!");
    xhr.send(formData);
}

    // Diese Daten/Text unten sind lokal für das JS-Skript, daher dürfen wir sie senden!
uploadFile({'hallo!':'wie geht es dir?'});

Also, wofür könnten Sie das möglicherweise verwenden? Ich benutze es, um HTML5 Canvas-Elemente als jpg's hochzuladen. Dies erspart dem Benutzer die Mühe, ein Datei input-Element öffnen zu müssen, nur um das lokale, zwischengespeicherte Bild auszuwählen, das sie gerade verkleinert, geändert usw. haben. Aber es sollte für alle Dateitypen funktionieren.

1 Stimmen

Das ist genau der Punkt: Sie versuchen nicht, ein "klassisches" HTML-Formular einzureichen (und Dateien dynamisch auf dem Eingabefeld festzulegen), sondern reichen das gesamte Formular über JS ein (einschließlich anderer Eingabefelder für Text usw.). Am Ende gibt es eine einzige JS-basierte Anfrage (POST) und kein einzelnes "klassisches" Einreichen. Ich denke, viele Leser dieses Threads sind genau wegen dieser Informationen hier.

-6voto

djperalta Punkte 183

Definieren Sie in HTML:

In JS:

ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
    .then(function (data) {
        if (data.error){
            ...;
        }
        else {
            $('#image').val(data.image);
        }
    })

Nach:

Absenden

1 Stimmen

Es sieht so aus, als ob Sie den Wert eines HTML-Elements mit einem Ajax-Aufruf hochladen. Das unterscheidet sich stark von der Festlegung des Werts eines input type="file"-Elements.

-14voto

uma Punkte 5

Eigentlich können wir es tun. Wir können den Dateiwert standardmäßig festlegen, indem wir die Webbrowser-Steuerung in C# mit der FormToMultipartPostData-Bibliothek verwenden. Wir müssen diese Bibliothek herunterladen und in unser Projekt einbeziehen. Der Webbrowser ermöglicht es dem Benutzer, Webseiten innerhalb des Formulars zu navigieren. Sobald die Webseite geladen ist, wird das Skript im webBrowser1_DocumentCompleted ausgeführt. Also,

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
       FormToMultipartPostData postData = 
            new FormToMultipartPostData(webBrowser1, form);
        postData.SetFile("fileField", @"C:\windows\win.ini");
        postData.Submit();
    }

Siehe den unten stehenden Link zum Herunterladen und für die vollständige Referenz.

https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com

8 Stimmen

In welche Sprache ist dies? Es ist kein JavaScript.

0 Stimmen

Sieht nach C# aus

CodeJaeger.com

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.

Powered by:

X