跳转至

文件上传(UploadDesignTimeController)

用于向设计器工作区上传资源文件(图片、附件、图标等),支持多文件上传、覆盖与图标命名模式,返回每个文件保存后的相对路径供设计器引用。

  • 接口类型:REST 资源
  • 基址${myapps.context-path.designer:}/api/designtime/applications
  • Tag:设计器模块

公共说明

  • 鉴权:需在设计器登录后携带 designerToken(query 参数 / Cookie / 请求头均可)或 Authorization: Bearer <token>。鉴权机制详见 ../index.md
  • 请求体类型multipart/form-data(文件上传)。
  • 响应:统一返回 Resource 结构(见 ../index.md「统一响应结构」),dataJSONArray,每个元素为 { 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「统一响应结构」)。 dataJSONArray,每个元素为 { "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
}

失败示例(文件类型不合法):

{
  "errcode": 4001,
  "errmsg": "上传的文件类型不合法!",
  "data": null,
  "errors": null
}

备注: - 文件名包含 /\ 时抛出 OBPMValidateException("上传的文件名称不合法!"),由全局异常处理返回错误响应。 - 扩展名不在 FileUtil.isLegalFileExt 合法集合内时返回 errcode=4001。 - icon=true 模式下若 cover=false 且同名文件已存在,会自动追加 (1)(2) 等序号。