# dmp-file接口 ## 前端使用引导 ### 1.本地安装(版本号:ISC) ``` npm install dmp-file --save ``` ### 2.使用方法 ```js import { uploadFile } from 'dmp-file' /* @param url 文件服务地址 例如‘http://develop.persagy.com/dmp-file’ @param groupCode 集团编码 例如‘YL’ @param file 文件 例如‘input.files[0]’ @param func 回调函数 默认console.log步骤 * { 回调函数返回值 * msg:'', * chunkCount:1, * partNumber:0 * } */ uploadFile('http://develop.persagy.com/dmp-file', 'YL', event.target.files[0], func) ``` ## 后端使用引导 ### 1.引入jar坐标(Maven方式) ``` persagy http://47.93.132.139:8081/nexus/content/repositories/persagy com.persagy dmp-file-starter 1.0.0 ``` ### 2.使用如下实例代码进行文件上传 ```java FileInfo fileInfo = FileInfoCreator.of(groupCode, businessId, appName, fileName); // 可对fileInfo属性额外配置。如有效期等 FileStorageHelper.uploadFile(fileInfo, inputStream); ``` ### 3.使用如下实例代码进行文件下载 ``` // 通过文件id获取文件流,当文件url不存在时会抛出系统资源异常的错误 FileStorageHelper.downloadStream(fileId); 或者 // 1.根据文件id获取文件下载地址 FileInfo info = FileStorageHelper.downloadUrl(fileId); // 2.通过http请求获取文件流 IoUtil.toStream(HttpUtil.downloadBytes(info.getFileDownloadUrl())); ``` ## 文件管理接口 ### 41001 保存文件信息 #### 接口 `http://localhost:8831/dmp-file/file/insert` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 否 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "groupCode": "PG", "fileName": "major", "fileType": "专业", "fileBucket": "Testing", "filePath":12, "fileSize":"**", "businessId":"20210813000000", "expireDate":"***" } ``` | 字段 | 是否必须 | 字段说明 | | ---------- | -------- | --------------------------------------- | | groupCode | 是 | 集团编码:租户 | | fileName | 是 | 文件名称:显示用 | | fileType | 否 | 文件类型:0-文件,1-目录 | | fileBucket | 是 | 文件分组:默认为应用名 | | filePath | 否 | 文件路径:含文件名称 - 对应文件存储路径 | | fileSize | 否 | 文件大小 | | businessId | 否 | 关联业务Id | | expireDate | 否 | 保留期限 | #### 成功例子 ``` { "result": "success", "data": { "id": "dev_1", "groupCode": "PG", "fileName": "major", "fileType": "专业", "fileBucket": "Testing", "filePath":12, "fileSize":"**", "businessId":"20210813000000", "expireDate":"***", "creationTime": "20210813000000", "creator": "wdl", "modifiedTime": "20210813000000", "modifier": "wdl", "valid": 1 }, "count": 26 } ``` | 字段 | 是否必有 | 字段说明 | | ------------ | -------- | ----------------------------------------------------- | | id | 是 | 32位UUID | | groupCode | 是 | 集团编码:租户 | | fileName | 是 | 文件名称:显示用 | | fileType | 是 | 文件类型:0-文件,1-目录 | | fileBucket | 否 | 文件分组:默认为应用名 | | filePath | 是 | 文件路径:含文件名称 - 对应文件存储路径 | | fileSize | 是 | 文件大小 | | businessId | 是 | 关联业务Id | | expireDate | 否 | 保留期限 | | creationTime | 否 | 创建时间,格式为yyyyMMddHHmmss | | creator | 否 | 创建人账号id | | modifiedTime | 否 | 最后更新时间,格式为yyyyMMddHHmmss | | modifier | 否 | 最后更新账号id | | valid | 否 | 有效状态,0-无效,1-有效 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | --------------------- | ---- | -------- | | 2021年8月17日10:39:56 | 新增 | 新增接口 | ### 41002 更新文件信息 #### 接口 `http://localhost:8831/dmp-file/file/update` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 否 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "id": "dev_1", "groupCode": "PG", "fileName": "major", "fileType": "专业", "fileBucket": "Testing", "filePath":12, "fileSize":"**", "businessId":"20210813000000", "expireDate":"***", "creationTime": "20210813000000", "creator": "wdl", "modifiedTime": "20210813000000", "modifier": "wdl", "valid": 1 } ``` | 字段 | 是否必须 | 字段说明 | | ------------ | -------- | --------------------------------------- | | id | 是 | 32位UUID | | groupCode | 是 | 集团编码:租户 | | fileName | 是 | 文件名称:显示用 | | fileType | 否 | 文件类型:0-文件,1-目录 | | fileBucket | 是 | 文件分组:默认为应用名 | | filePath | 否 | 文件路径:含文件名称 - 对应文件存储路径 | | fileSize | 否 | 文件大小 | | businessId | 否 | 关联业务Id | | expireDate | 否 | 保留期限 | | creationTime | 否 | 创建时间,格式为yyyyMMddHHmmss | | creator | 否 | 创建人账号id | | modifiedTime | 否 | 最后更新时间,格式为yyyyMMddHHmmss | | modifier | 否 | 最后更新账号id | | valid | 否 | 有效状态,0-无效,1-有效 | #### 成功例子 ``` { "result": "success", "data": { "id": "dev_1", "groupCode": "PG", "fileName": "major", "fileType": "专业", "fileBucket": "Testing", "filePath":12, "fileSize":"**", "businessId":"20210813000000", "expireDate":"***", "creationTime": "20210813000000", "creator": "wdl", "modifiedTime": "20210813000000", "modifier": "wdl", "valid": 1 }, "count": 26 } ``` | 字段 | 是否必有 | 字段说明 | | ------------ | -------- | --------------------------------------- | | id | 是 | 32位UUID | | groupCode | 是 | 集团编码:租户 | | fileName | 是 | 文件名称:显示用 | | fileType | 是 | 文件类型:0-文件,1-目录 | | fileBucket | 否 | 文件分组:默认为应用名 | | filePath | 是 | 文件路径:含文件名称 - 对应文件存储路径 | | fileSize | 是 | 文件大小 | | businessId | 是 | 关联业务Id | | expireDate | 否 | 保留期限 | | creationTime | 否 | 创建时间,格式为yyyyMMddHHmmss | | creator | 否 | 创建人账号id | | modifiedTime | 否 | 最后更新时间,格式为yyyyMMddHHmmss | | modifier | 否 | 最后更新账号id | | valid | 否 | 有效状态,0-无效,1-有效 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | --------------------- | ---- | -------- | | 2021年8月17日10:39:56 | 新增 | 新增接口 | ### 41003 删除文件信息 #### 接口 `http://localhost:8831/dmp-file/file/delete` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 否 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` "***" ``` | 字段 | 是否必须 | 字段说明 | | ---- | -------- | -------- | | id | 是 | 32位UUID | #### 成功例子 ``` { "result": "success" } ``` #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | --------------------- | ---- | -------- | | 2021年8月17日10:43:38 | 新增 | 新增接口 | ### 41004 根据文件id查找文件信息 #### 接口 `http://localhost:8831/dmp-file/file/load` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 否 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` "***" ``` | 字段 | 是否必须 | 字段说明 | | ---- | -------- | -------- | | id | 是 | 32位UUID | #### 成功例子 ``` { "result": "success", "data": { "id": "dev_1", "groupCode": "PG", "fileName": "major", "fileType": "专业", "fileBucket": "Testing", "filePath":12, "fileSize":"**", "businessId":"20210813000000", "expireDate":"***", "creationTime": "20210813000000", "creator": "wdl", "modifiedTime": "20210813000000", "modifier": "wdl", "valid": 1 }, "count": 26 } ``` | 字段 | 是否必有 | 字段说明 | | ------------ | -------- | --------------------------------------- | | id | 是 | 32位UUID | | groupCode | 是 | 集团编码:租户 | | fileName | 是 | 文件名称:显示用 | | fileType | 是 | 文件类型:0-文件,1-目录 | | fileBucket | 否 | 文件分组:默认为应用名 | | filePath | 是 | 文件路径:含文件名称 - 对应文件存储路径 | | fileSize | 是 | 文件大小 | | businessId | 是 | 关联业务Id | | expireDate | 否 | 保留期限 | | creationTime | 否 | 创建时间,格式为yyyyMMddHHmmss | | creator | 否 | 创建人账号id | | modifiedTime | 否 | 最后更新时间,格式为yyyyMMddHHmmss | | modifier | 否 | 最后更新账号id | | valid | 否 | 有效状态,0-无效,1-有效 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | -------- | ---- | -------- | | | 新增 | 新增接口 | ### 41005 根据业务应用id查找文件信息 #### 接口 `http://localhost:8831/dmp-file/file/queryByBusiness` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 否 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` "***" ``` | 字段 | 是否必须 | 字段说明 | | ---- | -------- | -------- | | id | 是 | 32位UUID | #### 成功例子 ``` { "result": "success", "data": [ { "id": "dev_1", "groupCode": "PG", "fileName": "major", "fileType": "专业", "fileBucket": "Testing", "filePath":12, "fileSize":"**", "businessId":"20210813000000", "expireDate":"***", "creationTime": "20210813000000", "creator": "wdl", "modifiedTime": "20210813000000", "modifier": "wdl", "valid": 1 } ], "count": 26 } ``` | 字段 | 是否必有 | 字段说明 | | ------------ | -------- | --------------------------------------- | | id | 是 | 32位UUID | | groupCode | 是 | 集团编码:租户 | | fileName | 是 | 文件名称:显示用 | | fileType | 是 | 文件类型:0-文件,1-目录 | | fileBucket | 否 | 文件分组:默认为应用名 | | filePath | 是 | 文件路径:含文件名称 - 对应文件存储路径 | | fileSize | 是 | 文件大小 | | businessId | 是 | 关联业务Id | | expireDate | 否 | 保留期限 | | creationTime | 否 | 创建时间,格式为yyyyMMddHHmmss | | creator | 否 | 创建人账号id | | modifiedTime | 否 | 最后更新时间,格式为yyyyMMddHHmmss | | modifier | 否 | 最后更新账号id | | valid | 否 | 有效状态,0-无效,1-有效 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | --------------------- | ---- | -------- | | 2021年8月17日10:46:06 | 新增 | 新增接口 | ### 41006 获得断点上传文件的分片信息 #### 接口 `http://localhost:8831/dmp-file/file/initChunkUpload?groupCode=YL&userId=0` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 是 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "fileMd5":"***", "fileName":"***", "chunkCount":3 } ``` | 字段 | 是否必须 | 字段说明 | | ---------- | -------- | ------------------------------------------------------------ | | fileMd5 | 是 | 文件内容的MD5值 | | fileName | 是 | 文件名称 | | chunkCount | 是 | 文件的分片数,文件切片的算子必须大于5M,且每个分片的大小不能小于5M | #### 成功例子 ``` { "result": "success", "data": { "id": "123456", "uploadCode": 200, "content": [ { "partNumber":1, "uploadUrl":"http://...,调用时使用的是PUT请求" } ] } } ``` | 字段 | 子字段 | 是否必有 | 字段说明 | | ---------- | ---------- | -------- | ------------------------------------------------------------ | | id | | 否 | uploadCode为200会有值. | | uploadCode | | 是 | 文件上传标识
200-秒传
202-断点续传且文件分片均已上传
203-断点续传 | | content | | 否 | uploadCode为203会有值 | | | partNumber | 是 | 分片序号 | | | uploadUrl | 是 | 文件上传URL
使用该url直接上传文件到文件服务器 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | ---------------------- | ---- | -------- | | 2021年10月23日14:52:11 | 新增 | 新增接口 | ### 41007 合并上传的断点续传文件 #### 接口 `http://localhost:8831/dmp-file/file/composeFile?groupCode=YL&userId=0` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 是 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "fileMd5":"***", "fileName":"***", "fileBucket":"ADM" } ``` | 字段 | 是否必须 | 字段说明 | | ---------- | -------- | ------------------------------------------------------------ | | fileMd5 | 是 | 文件内容的MD5值 | | fileName | 是 | 文件名称 | | fileBucket | 是 | 存储空间名称
允许字符:小写字母、连字符、数字
长度为3至63
开头和结尾必须是字母或数字 | #### 成功例子 ``` { "result": "success", "data": { "id": "123456" } } ``` | 字段 | 是否必有 | 字段说明 | | ---- | -------- | -------- | | id | 是 | 文件id | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | ---------------------- | ---- | -------- | | 2021年10月23日15:04:14 | 新增 | 新增接口 | ### 41008 获得文件上传信息 #### 接口 `http://localhost:8831/dmp-file/file/initSingleUpload?groupCode=YL&userId=0` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 是 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "fileMd5":"***", "fileName":"***", "fileBucket":"adm", "fileSize":10240 } ``` | 字段 | 是否必须 | 字段说明 | | ---------- | -------- | ------------------------------------------------------------ | | fileMd5 | 是 | 文件内容的MD5值 | | fileName | 是 | 文件名称 | | fileBucket | 是 | 存储空间名称
允许字符:小写字母、连字符、数字
长度为3至63
开头和结尾必须是字母或数字 | | fileSize | 是 | 文件内容字节长度 | #### 成功例子 ``` { "result": "success", "data": { "id": "123456", "uploadCode": 200, "content": [ { "partNumber":1, "uploadUrl":"http://...,调用时使用的是PUT请求" } ] } } ``` | 字段 | 子字段 | 是否必有 | 字段说明 | | ---------- | ---------- | -------- | ------------------------------------------------- | | id | | 是 | 文件id | | uploadCode | | 是 | 文件上传标识
200-秒传
201-单个文件上传 | | content | | 否 | uploadCode为201会有值 | | | partNumber | 是 | 分片序号 | | | uploadUrl | 是 | 文件上传URL
使用该url直接上传文件到文件服务器 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | ---------------------- | ---- | -------- | | 2021年10月23日14:52:11 | 新增 | 新增接口 | ### 41009 获得文件下载信息 #### 接口 `http://localhost:8831/dmp-file/file/initFileDownload?groupCode=YL&userId=0` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 是 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "fileId":"***" } ``` | 字段 | 是否必须 | 字段说明 | | ------ | -------- | -------- | | fileId | 是 | 文件id | #### 成功例子 ``` { "result": "success", "data": { "id": "1451771582172012545", "groupCode": "YL", "fileName": "572573a50fed51c18a3decbe46c1f599.jpeg", "fileType": "0", "fileBucket": "adm", "fileSize": 841926, "fileMd5": "ebda7668886ceec6fc11997844d75ff3", "businessId": "1451771580297158658", "fileDownloadUrl": "http://192.168.100.102:31335/adm/YL/20211023/572573a50fed51c18a3decbe46c1f599.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=persagy%2F20211023%2FGM%2B8%2Fs3%2Faws4_request&X-Amz-Date=20211023T071455Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=20db5a336991ba4a706e67e6b3154e897981f55481981d73805181100574f1f9,调用时使用的是PUT请求" } } ``` | 字段 | 是否必有 | 字段说明 | | --------------- | -------- | ------------------------ | | id | 是 | 文件id | | groupCode | 是 | 集团编码 | | fileName | 是 | 文件名称 | | fileType | 是 | 文件类型,0-文件,1-文件夹 | | fileBucket | 是 | 存储空间名称 | | fileSize | 否 | 文件长度,单位为字节 | | fileMd5 | 是 | 文件内容的MD5值 | | businessId | 否 | 文件对应的业务id | | fileDownloadUrl | 是 | 文件下载地址 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | ---------------------- | ---- | -------- | | 2021年10月23日15:18:11 | 新增 | 新增接口 | ### 41010 根据文件id批量获取文件下载信息 #### 接口 `http://localhost:8831/dmp-file/file/queryFetchUrlsByFileIds?groupCode=XG&userId=0` #### 请求方式 POST请求 #### RequestHeader | key | value | | ------------ | ---------------- | | Content-Type | application/json | #### RequestParam(URL中的Path参数) | 字段 | 是否必须 | 字段说明 | | --------- | -------- | -------- | | userId | 是 | 用户id | | groupCode | 否 | 集团编码 | | projectId | 否 | 项目id | | appId | 否 | 应用id | #### 参数例子 ``` { "fileIds":["***"] } ``` | 字段 | 是否必须 | 字段说明 | | ------ | -------- | -------- | | fileId | 是 | 文件id | #### 成功例子 ``` { "result": "success", "data": { "文件id": "http://192.168.100.102:31335/adm/YL/20211023/572573a50fed51c18a3decbe46c1f599.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=persagy%2F20211023%2FGM%2B8%2Fs3%2Faws4_request&X-Amz-Date=20211023T071455Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=20db5a336991ba4a706e67e6b3154e897981f55481981d73805181100574f1f9,调用时使用的是PUT请求" } } ``` | 字段 | 是否必有 | 字段说明 | | ------ | -------- | ------------------------------ | | 文件id | 是 | 传参的文件id,值为文件下载地址 | #### 接口修改记录 | 操作时间 | 操作 | 操作内容 | | ---------------------- | ---- | -------- | | 2021年12月31日15:24:46 | 新增 | 新增接口 |