Upload Textfile mit POST

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Linkai.

    Upload Textfile mit POST

    Hallo

    Ich möchte gerne mittels eines ​WebRequest ein Textfile hochladen.
    Es handelt sich hier um ein GCode File für den 3D-Drucker welches ich gerne an OctoPrint senden möchte.
    Folgendes steht in der OctoPrint API um das File hochzuladen:

    Quellcode

    1. POST /api/files/sdcard HTTP/1.1
    2. Host: example.com
    3. X-Api-Key: abcdef...
    4. Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryDeC2E3iWbTv1PwMC
    5. ------WebKitFormBoundaryDeC2E3iWbTv1PwMC
    6. Content-Disposition: form-data; name="file"; filename="whistle_v2.gcode"
    7. Content-Type: application/octet-stream
    8. ;Generated with Cura_SteamEngine 13.11.2
    9. M109 T0 S220.000000
    10. T0
    11. ;Sliced at: Wed 11-12-2013 16:53:12
    12. ;Basic settings: Layer height: 0.2 Walls: 0.8 Fill: 20
    13. ;Print time: #P_TIME#
    14. ;Filament used: #F_AMNT#m #F_WGHT#g
    15. ;Filament cost: #F_COST#
    16. ;M190 S70 ;Uncomment to add your own bed temperature line
    17. ;M109 S220 ;Uncomment to add your own temperature line
    18. G21 ;metric values
    19. G90 ;absolute positioning
    20. ...
    21. ------WebKitFormBoundaryDeC2E3iWbTv1PwMC
    22. Content-Disposition: form-data; name="select"
    23. true
    24. ------WebKitFormBoundaryDeC2E3iWbTv1PwMC
    25. Content-Disposition: form-data; name="print"
    26. true
    27. ------WebKitFormBoundaryDeC2E3iWbTv1PwMC--


    Und das ist mein bisheriger Code:

    VB.NET-Quellcode

    1. Dim request As WebRequest = WebRequest.Create("192.168.1.21/api/files/local")
    2. request.Method = "POST"
    3. request.ContentType = "multipart/form-data"


    Meine Frage ist, wo gebe ich jetzt den Pfad des zu hochladendem Files an und wie muss ich den API Key einbinden?


    Freundliche Grüsse

    Ebrithil
    Mein Erstes Tutorial: Erweitertes Arduino Tutorial

    Simpler D&D FTP Uploader: Edge-Load
    Servus,

    wenn ich das richtig lese benötigt es keinen API Key:
    Form Parameters:
    file – The file to upload, including a valid filename.
    select – Whether to select the file directly after upload (true) or not (false). Optional, defaults to false.
    print – Whether to start printing the file directly after upload (true) or not (false). If set, select is implicitely true as well. Optional, defaults to false.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    VB.NET-Quellcode

    1. dim nv as NamevalueCollection
    2. dim wc as Webclient
    3. function send()
    4. nv = new NameValueCollection
    5. nv.add("file", "pfad zur datei")
    6. nv.add("select", True oder False)
    7. nv.add("print", true or false)
    8. wc.proxy = nothing ' falls du keinen nutzt damit es schneller geht
    9. dim result() as byte = wc.uploadvalue("server","POST",nv)
    10. 'gegebenfalls einen String aus result convertieren um mit der Antwort zu arbeiten.
    11. return nothing
    12. end function

    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    @Linkai Diese Function-Definition wird nicht funktionieren, außerdem wäre eine Sub schlauer.
    Zudem hat der WebClient keine Instanz.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ups new vergessen :D

    kommt halt drauf an ob er ein True oder False auswerten mag obs geklappt hat oder nich ;)
    Dazu dann halt ne Try-Catch machen und beim Fehler eben return False + Fehlermeldung rausgeben.

    Falls nicht kann natürlich auch eine Sub benutzt werden uind das

    dim wc as WebClient zu ->> dim wc as new WebClient abändern
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:
    Ein ​Boolean kann nicht ​Nothing sein, außer er ist Nullable. Da der ​WebClient so oder so eine Instanz zur Verwendung braucht, kann man den gleich bei der Deklarierung instanziieren.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade

    Dies ist mir sicherlich bewusst. ich habe bei dem Codebeispiel Return Nothing verwendet weil ich dies in diesem moment als Korrekt empfand. (und auch als kleine C&P Bremse).
    Beim Deklarieren des Webclients habe ich lediglich das New vergessen :) aber ich danke dir trotzdem für die Informationen. Diese sind für den TE sicherlich hilfreich ;)
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love: