Why I can't save my data in a .mat when using WebAppServer?

My application is used to take a test to several people.
At each instance, Scores.mat is opened. It contains the structure Scores which stores the scores of the previous participants. The number of participants is retrieved. The new participant takes the test and the new scores are added to the strucure Scores. At the end of the test, the structure Scores is saved in Scores.mat, and so on.
% Load the scores table
load Scores.mat
app.Scores = Scores;
% Increment the participant index
app.idxParticipant = length(app.Scores) + 1;
% (...)
% Save scores (code has been modified for better clarity)
app.Scores(app.idxParticipant).Model(1) = app.EditField.Value;
app.Scores(app.idxParticipant).Model(2) = app.EditField_2.Value;
app.Scores(app.idxParticipant).Model(3) = app.EditField_3.Value;
% (...)
% Save listener scores
Scores = app.Scores;
save('Scores.mat','Scores')
Locally, everything runs well, of course. But when I test the Matlab WebApp, the very last step doesn't work: the structure Scores is not saved in Scores.mat and there is no errors in the logs.
Scores.mat is well embedded in the WebApp as I am able to open it and retrieve the Scores structure. The structure is well updated, I've checked it, but I am not able to save the updated structure back into Scores.mat.
I hope someone could help me here. Many thanks!

Answers (1)

I believe you need to specify the local path to which you are saving. You can do this with save, or you might want to check out uiputfile. That function will prompt the user with a standard "save file" dialog.

3 Comments

Thank you Taylor for your answer, but if I have understood you correctly, I don't think this is what I want to achieve.
I don't want the user to save the file somewhere, I want to update the file I have nested into the Web App:
Somehow, the webAppServer is able to open it, so it knows where it is, but it is not able to save it again.
Do you know how I could get the path of this file once it is embedded in the WebApp? Unless this is not a file anymore, once it is encapsulated?
Apologies, I did misinterpret your question. fileparts(which("Scores.mat")) will give you the location of where "Scores.mat" is located.
Thank you Taylor for your proposal. Locally, it works fine and I have the good path using the code you gave me. But once deployed, it returns a empty char array:

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Release

R2023b

Asked:

on 6 Aug 2024

Commented:

on 8 Aug 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!