Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Problem bei FileUpload to Azure - debugger funzt - code nicht (https://www.delphipraxis.net/211665-problem-bei-fileupload-azure-debugger-funzt-code-nicht.html)

schorsch666 20. Okt 2022 10:08

Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Moin @ALL,
wenn ich im restdebugger "PUT", meine URL, meine header (parameter/hinzufügen), den inhaltstyp auf "text/html" und in den benutzerdef. rumpf den inhalt der datei einfüge/setze, dann bekomme ich einen 201 "created" und die datei wird anstandslos erstellt.

wenn ich aber nun die komponenten aus dem debugger kopiere und in eine leere anwendung einfüge und einen execute ausführe, dann wird die datei nicht neu erstellt, sondern jedes mal upgedatet - also ändert sich nur der datetimestamp. also habe ich mir die params im request angeschaut und da ist ein parameter mit name = "body... (denke HEX-wert - zb "bodyF9DD68B493F6415697EA48A0D8B2214C"), value = "der dateiinhalt" und kind = pkRequestBody drin.

also denke ich, dass das an dem "name" liegt?? jedenfalls habe ich dann versucht den wert einfach mal manuell zu aendern - aber dann bekomme ich nen 400 - wrong parameter - und wenn ich ihn einfach leer lasse, ebenfalls.

bsp.:
// header:
RESTRequest.Params.AddItem('x-ms-blob-type','BlockBlob',TRESTRequestParameterKind.pkHTTP HEADER,[poDoNotEncode]);
RESTRequest.Params.AddItem('Content-Length',Length(GVstream.DataString).ToString,TREST RequestParameterKind.pkHTTPHEADER,[poDoNotEncode]);

// body:
RESTRequest.Params.AddItem('bodyF9DD68B493F6415697 EA48A0D8B2214B',GVstream.DataString,TRESTRequestPa rameterKind.pkREQUESTBODY,[poDoNotEncode]);

(wenn ich diesen code aufrufe - aber mit anderem body-inhalt und anderem dateinamen - wird trotzdem immer die alte datei ueberschrieben (in der URL steht uebrigens der dateiname))

also habe ich es mal mit:
RESTRequest.Params.AddBody(GVstream.DataString,TRe stContentType.ctTEXT_HTML);
versucht, aber leider selbes problem :(

wie gesagt, mit dem debugger funktionierts. hat jemand ne idee?? und liegt das ueberhaupt an dem "hex-wert"? ist bestimmt nur ne kleinigkeit..

danke vorab und bleibt gesund ;-)

de schorsch...

Uwe Raabe 20. Okt 2022 10:27

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Zitat:

Zitat von schorsch666 (Beitrag 1513519)
ist bestimmt nur ne kleinigkeit..

Den solltest du dir patentieren lassen :)

OK, zeig doch bitte mal den kompletten Code (ggf. mit obfuskierten Inhalten). Nur die kurzen Auszüge machen das Verstehen unnötig schwer.

schorsch666 20. Okt 2022 10:47

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Moin und hmmm... - was meinst du denn mit "kompletten code"?
eigentlich lade ich nur die datei in einen stringstream (GVstream), setze die params (versch. versionen) und execute.

RESTRequest.Params.Clear;
RESTRequest.Params.AddItem('x-ms-blob-type','BlockBlob',TRESTRequestParameterKind.pkHTTP HEADER,[poDoNotEncode]);
RESTRequest.Params.AddItem('Content-Length',Length(GVstream.DataString).ToString,TREST RequestParameterKind.pkHTTPHEADER,[poDoNotEncode]);

// RESTRequest.Params.AddItem('bodyF9DD68B493F6415697 EA48A0D8B2214B',GVstream.DataString,TRESTRequestPa rameterKind.pkREQUESTBODY,[poDoNotEncode]);
// RESTRequest.Params.AddBody(GVstream.DataString);
// RESTRequest.Params.AddBody(GVstream.DataString,TRe stContentType.TEXT_HTML);
RESTRequest.Params.AddBody(GVstream.DataString,TRe stContentType.ctAPPLICATION_JSON);

RESTRequest.Execute;

Uwe Raabe 20. Okt 2022 11:57

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Warum verwendest du RESTRequest.Params anstatt der Addxxx-Methoden in TRESTRequest? Dann könntest du z.B. direkt AddFile verwenden.

Andererseits kann ich aus dem Code-Part nicht erkennen, wie die Daten auf dem Server ausgewertet werden. So wäre eine Beschreibung wichtig, woran der Server erkennt, dass es eine neue Datei sein soll und wann ein Update.

schorsch666 20. Okt 2022 14:14

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
erstmal Danke. Die .add-methoden werde ich nochmal testen.

problem ist halt, dass wir keinen grossen einfluss bzw. zugriffsrechte auf deren cloud haben. also habe ich jetzt erstmal einen link bekommen, um zu testen, welche files ueberhaupt im "directory", von wann, etc. sind, damit ich "die" nicht dauernd nerven muss (kommt halt im xml-format).

also, ich versuche das mal morgen und winke ggf. wieder hektsich ;-)

tks, de schorsch..

schorsch666 20. Okt 2022 14:42

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
ich nochmal,
"addFile" will aber einen dateinamen haben - und den brauche ich doch nicht, denn der kommt in die URL. Und wo kommt dann der eigentliche dateiinhalt rein?

also eigentlich wollte ich ja nur das nachbilden, was der restdebugger auch macht, denn damit klappts ja.

du kannst ja einfach mal im restdebugger "PUT" waehlen, den inhaltstyp auf "text/html" stellen und in den benutzerdef. rumpf den inhalt einer textdatei einfuegen. dann die kompos in ne leere app kopieren und im request die params ansehen.. (wenn du magst) also was bedeutet dadrin der "name"?

so, erstmal feierabend..

LG

de schorsch

himitsu 20. Okt 2022 16:00

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Zitat:

Zitat von schorsch666 (Beitrag 1513551)
"addFile" will aber einen dateinamen haben

Eigentlich hätte ich gefragt "bist'e dir sicher?", ABER

https://docwiki.embarcadero.com/Libr...equest.AddFile

Da fehlt wirklich eine Variante mit Stream.
Diesen Bug sollte man mal melden. :stupid:

Dateiname (zum Laden und als Bezeichner "file" als Bezeichner)
oder
QuellDateiname (Dateisystem) mit optionalem Bezeichner
oder
TStream mit Bezeichner (was es aktuell nicht gibt ... also erst auf Festplatte und dann von dort, z.B. TPath.GetTempFileName mit TFile.WriteAll* oder Dergleichen)


Ja, AddFile reicht es am Ende auch nur an Params.AddItem weiter
aber von AddItem gibt es auch eine Variante, welche z.B. einen TFileStream/TMemoryStream oder TBytes (ala TFile.LoadAllBytes) entgegen nimmt.

Uwe Raabe 20. Okt 2022 16:12

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Solange man das Kriterium nicht kennt, nach dem der Server ein neues File anlegt oder ein bestehendes aktualisiert, wird das hier alles nur Spekulation.

Man muss nur bedenken, dass bei einem AddBody mit String als erstem Parameter ein zusätzlicher Body angelegt wird, während bei den anderen AddBody-Calls ein eventuell vorhandener Body-Parameter ersetzt wird. Aber ich sehe bisher noch nicht, inwieweit das hier relevant sein sollte.

Ein REST-Server ohne Beschreibung ist eigentlich unbrauchbar.

schorsch666 20. Okt 2022 16:30

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
@himitsu: "Ja, AddFile reicht es am Ende auch nur an Params.AddItem weiter" - deswegen ;-)

und zu Uwe: ich verstehe deine anmerkungen leider alle nicht wirklich. ich habe doch geschrieben, dass es eine azure-cloud ist und "die" einen container fuer uns angelegt haben, in welchem wir files ablegen sollen - soweit sogut - also was soll ich da fuer eine "server-doku" haben??

und dann: mit dem debugger funzt es doch. ich will doch einfach nur wissen, wie ich die parameter aus dem debugger ins proggi bekomme bzw. diejenigen im proggi setzen kann, die in den kompos (wenn ich die kopiere) fest unter "params" drinnen habe. hast du das denn mal versucht, was ich geschrieben habe? dann wirds doch ganz klar ;-)

erstmal tks fuer die hilfe

himitsu 20. Okt 2022 16:38

AW: Problem bei FileUpload to Azure - debugger funzt - code nicht
 
Zitat:

Doku
Die von Azure?


Hat die Rest-Komponente denn keine Debugevents,
wo man sich ansehen könnte, was genau versendet wird?

Und dann mit der Ausgabe vom RestDebugger vergleichen.


Alternativ, wenn möglich, beim Empfänger debuggen, also was bei ihm jeweils rein kommt.
Oder die Netzwerkschnittstelle loggen und dort dann nachsehn, was wer versendet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz