Hello everyone,
Thanks for reading my question.
I've created a Field of type File and place it on the form (model driven app). I need to do basic validation of the file such as File extension and File content. Now, with the help of Dataverse REST Builder I've the code to find the file name/extension & file content but the challenge is if I run the code on the fieldOnChange then the needed information doesn't exist in the database by the time. So, I need to find some other event on which I can trigger the code.
this.fileToProcessOnChange = function(executionContext){
prg_DataTransfer.checkFileExtension(executionContext);
}
this.checkFileExtension = function (executionContext){
$.ajax({
type: "GET",
url: Xrm.Utility.getGlobalContext().getClientUrl() + "/api/data/v9.2/prg_temporarydatas(cfb732f7-7acd-4193-9bfc-d4b352669f1c)?$select=prg_filetoprocess_name",
headers: {
"OData-MaxVersion": "4.0",
"OData-Version": "4.0",
"Content-Type": "application/json; charset=utf-8",
"Accept": "application/json",
"Prefer": "odata.include-annotations=*"
},
async: true,
success: function (data, textStatus, xhr) {
var result = data;
//console.log(result);
// Columns
var prg_temporarydataid = result["prg_temporarydataid"]; // Guid
var prg_filetoprocess_name = result["prg_filetoprocess_name"]; // Text
console.log("File Name: " + prg_filetoprocess_name);
},
error: function (xhr, textStatus, errorThrown) {
console.log(xhr);
}
});
}
Solved! Go to Solution.
I suppose your goal is to stop the user to upload a file if doesn't follow a specific filename/extension?
for example only uploading files like 2022*.pdf
I think it's difficult to run this logic at client-side, my suggestion is to check if you can get the name inside a sync pre plugin and eventually stop there, it's the most robust way to stop the upload.
I suppose your goal is to stop the user to upload a file if doesn't follow a specific filename/extension?
for example only uploading files like 2022*.pdf
I think it's difficult to run this logic at client-side, my suggestion is to check if you can get the name inside a sync pre plugin and eventually stop there, it's the most robust way to stop the upload.
Your understanding is absolutely correct. I need to validate the uploaded file extension and later need to check the format of the file.
Thanks for the suggestion and giving an alternate option to go with the plugin approach.
If you don't mind can I ask why are you saying difficult to run at client-side? Because, its a client-side code but I'm unable to find the right event to trigger the code. Even, I'm happy to trigger the code once the file is uploaded. Does it make sense? If I'm talking total non-sense please ignore me! 😉
Thanks again for your reply, appreciated!
beside the fact that by your tests client-side check is not successful:
1) client-side logic can be easily disabled
2) the upload can happen outside the web app client (directly by API for example)
in both these scenarios the plugin approach will always run
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |