How to send item picture to SOAP web service?

MortenSteengaard
Member Posts: 144
Hi experts,
I need to create a SOAP web service codeunit that gets an item number and returns the picture that is on that item in Business Central cloud.
(I think there can be more that one picture, but I only want to get the first picture.)
I have made the procedure below on a codeunit, but it doesn't return anything.
What am I doing wrong?
procedure GetItemImage(itemNo: Code[20]) Result: Text
var
Item: Record Item;
TenantMedia: Record "Tenant Media";
TempBlob: Codeunit "Temp Blob";
PictureInStream: InStream;
PictureOutStream: OutStream;
begin
if Item.Get(itemNo) then begin
if Item.Picture.Count = 0 then begin
exit('');
end;
TenantMedia.Get(Item.Picture.Item(1));
TenantMedia.CalcFields(Content);
if TenantMedia.Content.HasValue then begin
Result := '';
Clear(PictureInStream);
TenantMedia.Content.CreateInStream(PictureInStream);
TempBlob.CreateOutStream(PictureOutStream);
CopyStream(PictureOutStream, PictureInStream);
PictureInStream.ReadText(Result);
end;
end;
end;
I need to create a SOAP web service codeunit that gets an item number and returns the picture that is on that item in Business Central cloud.
(I think there can be more that one picture, but I only want to get the first picture.)
I have made the procedure below on a codeunit, but it doesn't return anything.
What am I doing wrong?
procedure GetItemImage(itemNo: Code[20]) Result: Text
var
Item: Record Item;
TenantMedia: Record "Tenant Media";
TempBlob: Codeunit "Temp Blob";
PictureInStream: InStream;
PictureOutStream: OutStream;
begin
if Item.Get(itemNo) then begin
if Item.Picture.Count = 0 then begin
exit('');
end;
TenantMedia.Get(Item.Picture.Item(1));
TenantMedia.CalcFields(Content);
if TenantMedia.Content.HasValue then begin
Result := '';
Clear(PictureInStream);
TenantMedia.Content.CreateInStream(PictureInStream);
TempBlob.CreateOutStream(PictureOutStream);
CopyStream(PictureOutStream, PictureInStream);
PictureInStream.ReadText(Result);
end;
end;
end;
0
Best Answer
-
Hello @MortenSteengaard
You can use this functionprocedure GetItemImage(itemNo: Code[20]) Result: Text var Item: Record Item; TenantMedia: Record "Tenant Media"; TempBlob: Codeunit "Temp Blob"; PictureInStream: InStream; base64cnv: Codeunit "Base64 Convert"; begin if Item.Get(itemNo) then begin if Item.Picture.Count = 0 then exit(''); if TenantMedia.Get(Item.Picture.Item(1)) then begin TenantMedia.CalcFields(Content); if TenantMedia.Content.HasValue then begin TenantMedia.Content.CreateInStream(PictureInStream); Result := base64cnv.ToBase64(PictureInStream, true); end; end; end; end;
Regards0
Answers
-
Hello @MortenSteengaard
You can use this functionprocedure GetItemImage(itemNo: Code[20]) Result: Text var Item: Record Item; TenantMedia: Record "Tenant Media"; TempBlob: Codeunit "Temp Blob"; PictureInStream: InStream; base64cnv: Codeunit "Base64 Convert"; begin if Item.Get(itemNo) then begin if Item.Picture.Count = 0 then exit(''); if TenantMedia.Get(Item.Picture.Item(1)) then begin TenantMedia.CalcFields(Content); if TenantMedia.Content.HasValue then begin TenantMedia.Content.CreateInStream(PictureInStream); Result := base64cnv.ToBase64(PictureInStream, true); end; end; end; end;
Regards0 -
Hi ftornero,
Thank you very much. It works fine!
Best regards,
Morten0 -
@MortenSteengaard If you wish at anytime between Webservices
https://rockwithnav.wordpress.com/2019/05/01/item-picture-webservice/
https://rockwithnav.wordpress.com/2019/08/02/consume-nav-service-get-item-picture/Thanks
Blog - rockwithnav.wordpress.com/
Twitter - https://twitter.com/RockwithNav
Facebook - https://facebook.com/rockwithnav/0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions