IMPORTSTREAM Function (MediaSet)
Adds a media file, such as a JPEG image, from an InStream object to the MediaSet of record for displaying in the client. The media is imported to the database and included in a MediaSet for the record.
Syntax
[Guid := ]Record.MediaSetField.IMPORTSTREAM(InStreamObject, Description[, MimeType])
Parameters
Record
Type: Record
Specifies the record that you want to add the media to.
MediaSetField
Type: MediaSet
Specifies the field that you want to add the media to. The field must have the MediaSet data type.
InStreamObject
Type: InStream
Specifies the InStream object that contains the media that you want to use on the record.
Description
Type: Text
Specifies text that can be used in the client to describe the media files.
MimeType
Type: Text
Specifies the media content type. MIME type is used by browsers, and is an Internet standard to describe the contents of a file. The MimeType value must be a two-part string that consists of a type and subtype, such as image/jpeg or image/gif. For more information, see Supported Media Types.
If this parameter is not specified, the function will deduce the MIME type from the file extension. For example the MIME type for a .jpg file is image/jpeg.
Property Value/Return Value
Type: GUID
The unique ID assigned to the MediaSet of the record. You can also retrieve the ID by using the MEDIAID Function (MediaSet).
Remarks
You can use this function to upload media that you want to associate with a record to the database. For example, you can upload media to items in table 27 Item. The function is similar to the IMPORTSTREAM Function (Media) except that this function enables you to import multiple media objects on the same record.
When a media is imported, it is assigned a unique identifier (GUID) and stored in the system table 2000000181 Tenant Media of the application database.
In addition, the media object is assigned to a MediaSet which also has a specific GUID. This GUID is included in the MediaSet data type field as a reference to the media objects. The MediaSet and its GUID are created with the first media that is imported, and the information is stored in table 2000000183 Tenant Media Set. All additional media objects for the record are then associated with the same MediaSet GUID.
Example
This example uses the IMPORTSTREAM function to add images to records in table 27 Item of the CRONUS demonstration database.
To support the example code that follows, you also have to complete these tasks:
Create two sample image files that you want to use on item no. 1000 in table 27 Item.
Save the images as JPEG type, and give them the names 1000-v1.jpg and 1000-v2.jpg. Save the files in the C:\images folder on the computer that is running Microsoft Dynamics NAV Server instance.
Verify that table 27 Item has a field that is called Picture and has the data type MediaSet.
This is field on which you will add the images. If the field is not present, then add it.
With these tasks in place, you can add and run the following C/AL code to import the images. For this code example, create a codeunit and add the code to the OnRun trigger.
The code requires that you create the following variables and text constant:
Variable name | DataType | Subtype |
---|---|---|
itemRec | Record | Item |
fileName | Text | |
inStreamObject | InStream | |
importFile | File | |
count | Integer | |
mediasetId | GUID |
Text constant name | ConstValue |
---|---|
Text000 | The files have been imported. Item %1 has %2 pictures in MediaSet: %3 |
itemRec.GET('1000');
fileName := 'C:\images\1000-v1.jpg';
importFile.OPEN(fileName);
importFile.CREATEINSTREAM(inStreamObject);
itemRec.Picture.IMPORTSTREAM(inStreamObject, 'Demo image for item ' + FORMAT(itemRec."No."));
itemRec.MODIFY;
importFile.CLOSE;
fileName := 'C:\images\1000-v2.jpg';
importFile.OPEN(fileName);
importFile.CREATEINSTREAM(inStreamObject);
itemRec.Picture.IMPORTSTREAM(inStreamObject, 'Demo image for item ' + FORMAT(itemRec."No."));
itemRec.MODIFY;
importFile.CLOSE;
count := (itemRec.Picture.COUNT);
mediasetId := itemRec.Picture.MEDIAID;
MESSAGE(Text000,itemRec."No.",count,mediasetId);
If you run system table 2000000181 Tenant Media from the development environment, you should see the new images in the list.
See Also
Working With Media on Records
IMPORTFILE Function (MediaSet)
MediaSet Data Type