访问 MATLAB Web App Server 上的文件
MATLAB® Web App Server™允许您通过 Web 浏览器界面部署和共享 MATLAB Web App。使用这些 Web App 时,用户经常需要在服务器和客户端计算机之间访问、操作和交换文件。您可以将文件与 Web App 一起打包,读取和写入服务器上的文件,以及将文件下载到本地客户端。
有关设置 MATLAB Web App Server 实例的信息,请参阅设置 MATLAB Web App Server。
Web App 中的包文件
编译时包含在 Web App 存档中的文件会嵌入到 CTF 中,并在 Web App 运行时添加到路径中。文件位于服务器上的缓存文件夹中,其根目录为 ctfroot 位于可部署存档目录下。这些文件应视为只读文件。
要指定 Web App 代码中打包文件的路径,请使用 which 函数查找文件,或指定相对于 ctfroot 文件位置。使用 isdeployed 可以在本地路径和已部署路径之间切换。
有关在编译时包含文件的详细信息,请参阅在打包的应用程序中包含和访问文件 (MATLAB Compiler)。
包含 MEX 文件、DLL 或共享库
当您编译包含 MEX 文件的 MATLAB 函数时,请确保依赖关系分析过程可以找到它们。特别是,请注意:
由于依赖关系分析函数无法检查 MEX 文件、DLL 或共享库以确定它们的依赖关系,因此,应明确包含这些文件所需的所有可执行文件。
如果您怀疑在依赖关系分析期间能否找到由 MEX 文件、DLL 或共享库调用的某个 MATLAB 函数,请手动包含该函数。
并非所有函数都与编译器兼容。当编译完成后,请检查文件
mccExcludedFiles.log。该文件列出了从您无法部署的应用程序调用的所有函数。
在 Web App 会话期间写入文件
在 Web App 会话运行期间,从当前工作目录读取或写入的文件会写入会话文件夹,会话文件夹是服务器上的一个本地文件夹,它是为 Web App 的每个运行会话创建的,并且每个会话都有一个唯一的 ID。会话文件夹会自动添加到正在运行的 App 会话的路径中,并充当当前工作目录。文件夹不会在会话之间共享,会话文件夹中的文件在其他 App 会话中不可用,并且每个文件夹都会在会话结束时自动删除。在涉及 uigetfile 和 uiputfile 工作流中,您可以使用会话文件夹在服务器和客户端计算机之间传递数据。
服务器文件存储位置
您可以通过在 MATLAB 代码中使用硬编码路径来读取/写入服务器上的特定文件位置。路径必须指向服务器存储中存在的位置,并且路径必须特定于服务器计算机上的文件系统。服务器静态位置的文件所做的更改会在所有 App 会话之间共享。
为了使您的 Web App 能够与不在 App 搜索路径上的本地文件或目录(即不在 App/会话缓存中的文件或目录)进行交互,运行 App 服务的工作单元帐户必须具有读取和写入这些位置的必要权限。默认情况下,工作单元帐户对计算机上的大多数位置没有读/写权限。您必须使用 chmod 等命令行工具或在 Windows® 资源管理器中编辑权限,明确授予工作单元帐户对服务器计算机上的这些文件或文件夹的读/写权限。对于云部署,您必须远程连接到服务器实例来设置文件权限。有关服务帐户的详细信息,请参阅设置 MATLAB Web App Server。
共享位置或网络位置
您可以通过 Web App 读取和写入数据库或网络位置。数据库或网络位置必须能够从MATLAB Web App Server访问。对共享位置所做的更改会在所有 App 会话中保留。MATLAB Web App Server机密管理功能对于确保此类工作流的安全性非常有用。有关详细信息,请参阅处理已部署 App 中的敏感信息。
工作单元帐户必须对共享位置具有读写访问权限。对于网络位置,这通常要求工作单元使用网络或域帐户,因为通常不能授予本地帐户对非本地文件位置的访问权限。
注意
部署访问数据库的 Web App 可能需要一些额外的设置步骤、工具箱或驱动。例如,要部署使用 MySQL 本机接口的 Web App,您必须首先在服务器计算机上安装 MySQL/C++ Connector 文件,如 Deploy MySQL Native Interface Database Application with MATLAB Compiler (Database Toolbox) 所示。
从 Web App 下载文件
要从 Web App 将文件保存到客户端计算机,请使用 uiputfile 获取下载位置的路径。您可以将此路径用作写入函数(例如 save 和 exportgraphics 中的目标,以将文件下载到客户端计算机。
例如,将 app 组件 app.UIAxes 上显示的图表保存为 PNG 文件。
% Get the path to the download location [f, p] = uiputfile('*.png'); % Save the plot to the specified path exportgraphics(app.UIAxes,fullfile(p,f));
从 Web App 下载的文件总是放置在客户端浏览器指定的下载位置。用户可以在 uiputfile 对话框中指定文件名,但目标文件夹只能通过浏览器设置进行更改。虽然 uiputfile 和 uigetfile 支持在 Web App 来回传递文件,但 uigetdir 函数不支持与 Web App 一起使用。有关详细信息,请参阅Web App 限制和不支持的功能。
另请参阅
ctfroot (MATLAB Compiler) | isdeployed (MATLAB Compiler) | uigetfile (MATLAB) | uiputfile (MATLAB) | save (MATLAB) | which (MATLAB)
主题
- 编写可部署的 MATLAB 代码 (MATLAB Compiler)
- 在打包的应用程序中包含和访问文件 (MATLAB Compiler)
- 创建 Web App
- 部署 Web App
- 设置 MATLAB Web App Server
- Web App 限制和不支持的功能