4. August 2022 15:40
TestFile.Open(FilePath, TextEncoding::Windows); //Ohne das Encoding::Windows kommt totaler Quark bei raus.
TestFile.CreateInStream(TempInStream);
while not TempInStream.EOS do begin //Ohne die while ließt er nur 4 von knapp 300.000 Zeichen meines Testbildes.
TempInStream.Read(TestText);
if TestText = '' then //Beim einlesen der Textstückchen filtert Stream.read leerzeichen anscheint raus. Dann passt die Datei aber nicht mehr.
TestText := ' ';
ImageAsBinary += TestText;
end;
Message(ImageAsBinary);
TestFile.Open(FilePath);
TestFile.CreateInStream(TempInStream);
TempInStream.Read(ImageAsBinary);
TestFile.Close();
Message(ImageAsBinary);
4. August 2022 16:02
5. August 2022 10:35
FileManagement.BLOBImportFromServerFile(TempBlob, FilePath); //Irgendwie muss die Datei ja erstmal vom Server ins BC bzw in den Speicher.
TempBlob.CreateInStream(TempInStream); //Jetzt will ich den Inhalt des Blobs von gerade lesen und öffne den Stream
while not TempInStream.EOS do begin //Jetzt lese ich den Stream in eine Text-Variable. Leider muss auch hier die while sein, da er in meinem Beispiel das erste mal nach 4 Zeichen sonst aufhören würde.
TempInStream.Read(TestText);
if TestText = '' then
TestText := ' ';
ImageAsBinary += TestText;
end;
procedure BLOBImportFromServerFile(var TempBlob: Codeunit "Temp Blob"; FilePath: Text)
var
OutStream: OutStream;
InStream: InStream;
InputFile: File;
begin
IsAllowedPath(FilePath, false);
if not FILE.Exists(FilePath) then
Error(FileDoesNotExistErr, FilePath);
InputFile.Open(FilePath);
InputFile.CreateInStream(InStream);
TempBlob.CreateOutStream(OutStream);
CopyStream(OutStream, InStream);
InputFile.Close;
end;
ÿØÿà JFIF ÿÛ C ÿÛ CÿÀ .è" ÿÄ
ÿÄ µ } !1AQa"q2‘¡#B±ÁRÑð$3br‚
Ï ÓJFIF ›C ›C ‹.Þ"
Á }!1AQa"q2üæí#BŒRÐ$3bré
ÿØÿàJFIF ÿÛCÿÛCÿÀ.è"ÿÄ
ÿĵ }!1AQa"q2‘¡#B±ÁRÑð$3br‚
5. August 2022 10:59
Ist ja schon etwas kurz und lässt alles offen.
Ich sehe den Sinn nicht über ein TempBlob zu gehen. Vielleicht erläuterst du mir den Mehrwert
5. August 2022 11:43
fiddi hat geschrieben:Deshalb heißen die so (Binary Large OBjects)
fiddi hat geschrieben:Nun meine Erklärung war deshalb etwas kurz, weil es Tonnen an Beispielen im Internet und auch in der Base-App gibt, wie man mit Binaries umgeht.
fiddi hat geschrieben:Auf diese Binarydaten kannst du nicht ohne Tricks mit einer Textvariable zugreifen,
5. August 2022 12:25
5. August 2022 12:48
fiddi hat geschrieben:Hallo,
ich wollte noch einen vorherigen Post noch einen Satz schreiben:
Wenn du die Daten allerdings im Internet übertragen möchtest, dann macht man das natürlich nicht im Binary- Format. Dafür benutzt man natürlich einen Text.
Das Stichwort dazu heißt "Base64- Encoding"
Gruß Fiddi
// POST http://localhost/api/_action/media/{mediaId}/upload?extension=jpg
// Content-Type: image/jpg
// binary file body
Bist du dir sicher, dass Base64 schon durch die API supported wird? Mein letzter Stand ist als FILE/POST oder via URL (Bild liegt auf remote Host).
Das Bild einfach ohne BASE64 senden. BASE64 bläht hier nur den Payload auf und bringt nichts weil du über http problemlos Binary senden kannst.
Auf diese Binarydaten kannst du nicht ohne Tricks mit einer Textvariable zugreifen,…
FileManagement.BLOBImportFromServerFile(TempBlob, FilePath);
TempBlob.CreateInStream(ContentInStream);
Content.WriteFrom(ContentInStream);
ImageFile.Open(FilePath);
ImageFile.CreateInStream(ContentInStream);
Content.WriteFrom(ContentInStream);
5. August 2022 13:46
{
"url": "<[b][u][color=#FF4000]url-to-your-image[/color][/u][/b]>"
}
5. August 2022 14:04
fiddi hat geschrieben:Hallo,
schau mal was da in der Beschreibung steht:
Code: Alles auswählen
{
"url": "<url-to-your-image>"
}
Aquator hat geschrieben:Es gibt übrigens Addons, die eine Shop-Anbindung für euch handeln können, da ist noch einiges mehr zu beachten.
5. August 2022 15:17
Das stimmt nicht. Du schaust unter dem Unterpunkt "Provide a resource URL" ein kleines stück tiefer ist der nächste Unterpunkt "Upload the resource directly".