文件上传(UploadDesignTimeController)¶
用于向设计器工作区上传资源文件(图片、附件、图标等),支持多文件上传、覆盖与图标命名模式,返回每个文件保存后的相对路径供设计器引用。
- 接口类型:REST 资源
- 基址:
${myapps.context-path.designer:}/api/designtime/applications - Tag:设计器模块
公共说明¶
- 鉴权:需在设计器登录后携带
designerToken(query 参数 / Cookie / 请求头均可)或Authorization: Bearer <token>。鉴权机制详见 ../index.md。 - 请求体类型:
multipart/form-data(文件上传)。 - 响应:统一返回
Resource结构(见 ../index.md「统一响应结构」),data为JSONArray,每个元素为{ fileName, filePath }。 - 保存目录:文件保存到设计器工作区
<workspaceRoot>/<应用名>.<pathSuffix>/resources/<子路径>/<文件名>,由SecurityFile.resolveFile解析以防止目录越权。
1. 文件上传¶
向指定应用的资源目录上传一个或多个文件,返回保存后的相对路径列表。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/{applicationId}/uploads(完整:{designer-context}/api/designtime/applications/{applicationId}/uploads) - 鉴权:是(需 designerToken)
- Tag:设计器模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| file | body(form) | file[] | 是 | 一个或多个文件(表单字段名重复为 file) |
| cover | body(form) | boolean | 否 | 是否覆盖同名文件,默认 true;仅在 icon=true 时生效 |
| icon | query | boolean | 否 | 是否图标模式:true 以原文件名保存(冲突时按 cover 决定覆盖或追加序号);false/缺省 以随机 UUID 命名保存 |
| path | query | string | 否 | 自定义资源子路径(相对 /resources);缺省按当前年份(如 /2026)归类存放 |
请求示例¶
POST /api/designtime/applications/__appid123/uploads?icon=false&cover=true HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="logo.png"
Content-Type: image/png
<binary>
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="bg.jpg"
Content-Type: image/jpeg
<binary>
------WebKitFormBoundary--
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:JSONArray,每个元素为 { "fileName": "<最终保存的文件名>", "filePath": "<相对 /resources 的访问路径>" }。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": [
{ "fileName": "logo.png", "filePath": "/resources/2026/<uuid>.png" },
{ "fileName": "bg.jpg", "filePath": "/resources/2026/<uuid>.jpg" }
],
"errors": null
}
失败示例(文件类型不合法):
备注: - 文件名包含
/或\时抛出OBPMValidateException("上传的文件名称不合法!"),由全局异常处理返回错误响应。 - 扩展名不在FileUtil.isLegalFileExt合法集合内时返回errcode=4001。 -icon=true模式下若cover=false且同名文件已存在,会自动追加(1)、(2)等序号。