How to attach a generated file to a record from a business process
Hello,
I have a web service that generates a file. I need to attach that file to a record. I see there is an option to the Process File Component passing a File as parameter, but the Parameter is Expecting a IFileLocator. How can I use a script to create a IFileLocator from a full file path on Creatio Studio version 8.1?
Thanks,
Jose
Like
Hello,
You should use a script task to work with files from the web service.
More details about the API file:
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…
Hello,
You should use a script task to work with files from the web service.
More details about the API file:
https://academy.creatio.com/docs/8.x/dev/development-on-creatio-platfor…
Thanks Cherednichenko. Using the information provided I wrote the C# below to attach a generated file to a record.
public void AttachFile(string schemaName, Guid recordId, string fullFilePath) {
/* Create a unique ID for the new file. */
Guid fileId = Guid.NewGuid();
/* Create a file locator for the new file. */
var fileLocator= new EntityFileLocator("SysFile", fileId);
/* Get an IFile object for the new file. */
IFile file = UserConnection.CreateFile(fileLocator);
/* There is no file metadata or file content in the available file storages. Specify the file name in the file metadata. */
file.Name = (new System.IO.FileInfo(fullFilePath)).Name;
/* Set an attributes for the new file: */
file.SetAttribute("RecordSchemaName", schemaName);
file.SetAttribute("RecordId", recordId);
/* Save the file metadata Do this BEFORE saving the content. */
file.Save();
using (var sourceStream = new FileStream( fullFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize: 4096, useAsync: true)) {
file.Write(sourceStream, FileWriteOptions.SinglePart);
}
}