• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

File Upload

musclebreast

Mitglied
Hallo,

ich habe ein Websystem in dem ich Dateien hochladen kann. Folgender Code geht in meinem System:

Code:
<form name="AddVersionForm" action="/dms/cs.exe" enctype="multipart/form-data" method="post">
<input name="func" type="HIDDEN" value="doc.addversion2">
<input name="volumeId" type="HIDDEN" value="-2000">
<input name="nodeID" type="HIDDEN" value="11794202">





<input name="versionFile" title="Browse... Filename field and browse button that opens a new window." class="valueEditable" id="versionFile" type="file" size="40">




<input class="saveButton" id="addVersion" type="BUTTON" value="Add Version">

</form>



Ich würde jetzt gerne den Upload via Ajax ausführen. Umschreiben ist kein Problem, aber wie kann ich die Datei (Feld versionFile) übergeben bzw. auslesen?

Ich hoffe ihr habt einen Tipp für mich?

LG,

Lara
 
Werbung:
Hallo,

besten Dank. Ein Plugin brauche ich ja nicht wirklich. Schau meinen Code an. der funktioniert ja schon in meinem System. Ich würde ihn nur gerne als Ajax Call umschreiben....die Variablen sind kein Problem aber wie übergebe ich das FIle bzw. wie wird das FIle übergeben, wenn ich es in einer Form ausführe?

VG,

Lara
 
Werbung:
Dein Code funktioniert, weil du Standard Browser Funktionalität verwendest und auf dem Server ein spezielles Empfänger-Programm cs.exe deines CMS verwendest. Wenn du Ajax verwenden willst, dann musst entweder den Browser simulieren oder einen anderen Empfänger wie PHP auf dem Server haben.

Nachtrag: Hier mal eine Diskussion zum File-Upload, der genau beschreibt, wie Dateien vom Browser beim Upload über ein Formular kodiert werden http://stackoverflow.com/questions/8659808/how-does-http-file-upload-work. Deine cs.exe erwartet genau dieses Format
 
Zuletzt bearbeitet:
Hallo,

danke für die Antwort. Ja du es ist wie du sagst. Was meinst du mit Browser simulieren? Ist es eine Möglichkeit Formdata zu übermitteln?

Code:
$(document).ready(function() {

$('#upload').on('click', function() {
   


alert('ww');

$('#AddVersionForm').on('sumbit', function(){
    var form = $(this);
    var formdata = false;
    if (window.FormData){
        formdata = new FormData(form[0]);
    }

    var formAction = form.attr('action');
    $.ajax({
        url         : '/dms/cs.exe',
        data        : formdata ? formdata : form.serialize(),
        cache       : false,
        contentType : false,
        processData : false,
        type        : 'POST',
        success     : function(data, textStatus, jqXHR){
            alert('drin');
        }
    });
});





});



});

Habs schon probiert aber bin mir nicht sicher, ob ich mit formdata auf dem richtigem Weg bin?

LG,

Lara
 
Ja das meinte ich mit Simulieren, du musst, wenn der Server-Empfänger das erwartet, die Daten vor der Übertragung wie der Browser als Multibodypart Mime kodieren. Ich kenne Ajax so gut wie nicht, eventuell gibt es ja da eine Einstellung oder Funktion (wie dein form.serialize), die das für dich macht. MIME Kodierung ist halt prinzipiell nicht so effektiv, da man ja beliebige Binärdaten in 7 Bit ASCII umwandelt und somit das Datenvolumen erhöht.
 
Werbung:
Hi,
danke für deine Hilfe. Hat den jemand einen Tipp wie ich diesen Form Inhalt

Code:
<form name="AddVersionForm" action="/dms/cs.exe" enctype="multipart/form-data" method="post">
<input name="func" type="HIDDEN" value="doc.addversion2">
<input name="volumeId" type="HIDDEN" value="-2000">
<input name="nodeID" type="HIDDEN" value="11794202">


<input name="versionFile" title="Browse... Filename field and browse button that opens a new window." class="valueEditable" id="versionFile" type="file" size="40">


<input class="saveButton" id="addVersion" onclick="doSubmit( this.form )" type="BUTTON" value="Add Version">
<input class="resetButton" type="RESET" value="Reset">
</form>

in einen Ajax Request umwandel und zwar multipart/form-data" kodiert? Ich probiere schon den halben Tag aber so richtig klappt es leider nicht...

LG,

Lara
 
Kommst du damit nicht weiter https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding, zusammen mit dem Artikel von Stack-Overflow sollte es doch reichen, erst mal einen einfachen Body mit nur einem Textfeld oder nur einer Datei zu übertragen.

Nachtrag: Wie gesagt, ich kenne Ajax nicht. Aber auf meiner Homepage ist ein Beispiel für das FileReader API http://php.netaktiv.de/index.php?page=browser. Du musst die Datei meines Erachtens nach erst analog einlesen, dann wie in dem Artikel Base-64 kodieren und eventuell noch ein paar MIME Header darum bauen und dann das ganze an Ajax zum Transfer geben. Zumindest würde ich es so versuchen, aber wie gesagt, ich kenne die Macht von Ajax nicht. Im allerersten Schritt würde ich vermutlich erst mal einfach eine MIME kodierte Datei auf die Festplatte legen und mit Ajax übertragen
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben