AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Problem bei FileUpload to Azure - debugger funzt - code nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei FileUpload to Azure - debugger funzt - code nicht

Ein Thema von schorsch666 · begonnen am 20. Okt 2022 · letzter Beitrag vom 1. Nov 2022
Antwort Antwort
Seite 1 von 2  1 2      
schorsch666

Registriert seit: 21. Apr 2011
81 Beiträge
 
#1

Problem bei FileUpload to Azure - debugger funzt - code nicht

  Alt 20. Okt 2022, 11:08
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...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 20. Okt 2022, 11:27
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
schorsch666

Registriert seit: 21. Apr 2011
81 Beiträge
 
#3

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

  Alt 20. Okt 2022, 11:47
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;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 20. Okt 2022, 12:57
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
schorsch666

Registriert seit: 21. Apr 2011
81 Beiträge
 
#5

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

  Alt 20. Okt 2022, 15:14
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..
  Mit Zitat antworten Zitat
schorsch666

Registriert seit: 21. Apr 2011
81 Beiträge
 
#6

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

  Alt 20. Okt 2022, 15:42
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 20. Okt 2022, 17:00
"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.

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.
$2B or not $2B

Geändert von himitsu (20. Okt 2022 um 17:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 20. Okt 2022, 17:12
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
schorsch666

Registriert seit: 21. Apr 2011
81 Beiträge
 
#9

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

  Alt 20. Okt 2022, 17:30
@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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 20. Okt 2022, 17:38
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.
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