Expert Answer:
:
To save files to a client machine from a web app, use uiputfile to get the path to the download location. This path can then be used as the destination in write functions such as save, exportgraphics, etc. to download files for the user.
For example, to save the graph currently displayed on your app's app.UIAxes component as a .PNG file:
% Get the path to the download location
[f, p] = uiputfile('*.png');
% Save the plot to the specified path
exportgraphics(app.UIAxes,fullfile(p,f));
To download multiple files at once, use zip to compress the files into a single .ZIP file and save this to the client machine:
% Get the path to the download location
[f, p] = uiputfile('*.zip');
% Zip 3 files and save them to the specified path
zip(fullfile(p,f),{'file1.mat','file2.mat','file3.mat'});
Some additional things to note:
- Files downloaded from a web app will always be placed in the download location specified by the client browser. The user can specify a file name in the uiputfile dialogue box, but the destination folder can only be changed from their browser settings.
- If your web app references files on the server machine that are not along the app's search path (i.e. outside of the app/session caches), ensure that the apps service has access to these files.
- While uiputfile and uigetfile are supported for passing files to/from web apps, the uigetdir function is not supported for use with web apps.