c# url post upload problem



  • Guten Abend zusammen.

    Ich habe ein kleines Problem mit meinem Programm explizit mit dem Upload einer Datei via POST zu einer URL.

    Vorweg: kein FTP!

    Ich habe mich schon einige Stunden im Internet auf die Suche begeben doch leider erfolglos.
    Es soll eine eine Bilddatei, die ich vorher Überprüfe auf dpi Größe etc. (läuft alles) hierhin geschickt werden:

    WebRequest request = WebRequest.Create("http://www.xxxxxxxxx.php" + "?id=" + strname + "&pw=" + strpass + "&text=" + text + "&absender=" + absender + "&empfaenger=" + empfaenger);

    Habe auch über curl einiges gelesen auch für c#, die dll eingebunden und so einiges ausprobiert doch leider bisher ohne erfolg.
    Würde mich sehr über ein wenig Hilfe freuen.

    Danke



  • Nimm die WebClient-Klasse mit UploadData()
    (In deinem WebRequest-Beispiel taucht die zu sendene Datei überhaupt nicht auf, zudem sieht das sehr nach GET aus?)



  • gut, hier mal der komplette c#-code
    vielleicht kann man dann mehr sehen...

    string strname = label4.Text;
    string strpass = label5.Text;
    string text = Uri.EscapeDataString(textBox1.Text);
    string absender = Uri.EscapeDataString(textBox2.Text);
    string empfaenger = Uri.EscapeDataString(textBox3.Text);
    string filename = textBox4.Text;

    WebClient web = new WebClient();

    web.UploadFile(new Uri("http://www.xxxxxx.php" + "?id=" + strname + "&pw=" + strpass + "&art=p&mode=1&text=" + text + "&absender=" + absender + "&empfaenger=" + empfaenger), "POST", filename);

    habe keine ahnung wie ich hier weiter machen soll.....

    danke schonmal!



  • habe keine ahnung wie ich hier weiter machen soll.....

    Am besten deinen Code einfach mal in die entsprechenden Tags packen!



  • sollte man web.UploadFile oder web.UploadData verwenden?

    ich habe schon alles versucht (auch an die tags gedacht!) aber es wird nichts auf dem server hinterlegt.

    mir würde nen kleines beispiel hier sehr helfen!

    danke



  • Du müsstest erstmal wissen, was der Webserver überhaupt erwartet!

    Zudem ist eine URI mit Argumenten (wie bei GET üblich, also "http://www.bla.de/?bli=blupp&bla=blapp") und dann aber POST nutzen ist problematisch!
    Das ist laut HTTP-RFC überhaupt nicht erlaubt, die Argumente werden von diversen Webservern sogar verworfen!

    Üblicherweise verwenden eine Webseite irgendwie sowas:

    <form method="POST" action="http://localhost/" enctype="multipart/form-data">
    ...
    </form>
    

    ...die Webseite erwartet dann die Formulardaten (und die Felder die du derzeit mit in der URL stehen hast (pw, id, ...)) in einem bestimmten Format, welches in der RFC1867 beschrieben ist.

    Und da RFCs lesen keinen Spass macht, könnte das hier eher helfen:
    http://www.briangrinstead.com/blog/multipart-form-post-in-c/



  • Es hat zwar leider noch nicht zur Lösung gereicht aber ich danke dennoch für die Lösungsvorschläge und Zeit die darin aufgebracht wurde.
    Ich werde mal schauen ob ich den Rest noch hin kriege, falls sonst noch eine Frage aufkommt werde ich mich nochmal melden.

    Danke


Anmelden zum Antworten