Skip to content

文件上传

接口信息

接口地址:/api/v1/file/upload

请求方式:POST

请求数据类型:multipart/form-data

响应数据类型:*/*

接口描述:

文件上传接口,上传后返回文件网络地址

请求示例:

POST /api/v1/file/upload?type=tmp
Content-Type: multipart/form-data

file: (binary)

请求参数

请求头

参数名类型必填描述示例值
AuthorizationstringAPI KeyBearer ak-xxxxeyJhbGciOiJIUzI1NiJ9

查询参数:

参数名称参数说明是否必须数据类型默认值
type存储类型,tmp 临时文件;store 永久存储stringtmp

表单参数:

参数名称参数说明是否必须数据类型
file文件二进制file

响应参数:

参数名称参数说明类型schema
code业务状态码,0000 表示成功,其余失败string
displayCode源系统状态码,用于问题跟踪string
message错误描述信息string
data文件上传结果objectUploadResultDto
  url文件完整的网络地址string
  key文件唯一标识string
  fileName文件名称string
  mimeType文件类型string
  size文件大小(字节)integer(int32)
  width图片宽度integer(int32)
  height图片高度integer(int32)
tid跟踪唯一标识string
successboolean

响应示例:

javascript
{
	"code": "0000",
	"displayCode": "0000",
	"message": "success",
	"data": {
		"url": "https://agent-statics-tc.nuwax.com/tmp/f7dce62d43d142559772c0bd01b20e36.txt",
		"key": "tmp/f7dce62d43d142559772c0bd01b20e36.txt",
		"fileName": "test_upload.txt",
		"mimeType": "text/plain",
		"size": 18,
		"width": 0,
		"height": 0
	},
	"tid": "7383371776087252690",
	"success": true
}

CURL示例

shell
# 上传临时文件
curl 'http://127.0.0.1:8081/api/v1/file/upload?type=tmp' \
  -X POST \
  -H 'Authorization: Bearer ak-d1f2129c4ba24629b8448af3354f9dd0' \
  -F 'file=@/path/to/your/file.txt'

# 上传永久存储文件
curl 'http://127.0.0.1:8081/api/v1/file/upload?type=store' \
  -X POST \
  -H 'Authorization: Bearer ak-d1f2129c4ba24629b8448af3354f9dd0' \
  -F 'file=@/path/to/your/image.png'

测试用例

#场景状态码结果
1上传临时文件(type=tmp)0000成功,返回临时文件URL
2上传永久存储文件(type=store)0000成功,返回永久文件URL

TS模板示例

ts
// 文件上传结果
export interface UploadResultDto {
  /* 文件完整的网络地址 */
  url: string;
  /* 文件唯一标识 */
  key: string;
  /* 文件名称 */
  fileName: string;
  /* 文件类型 */
  mimeType: string;
  /* 文件大小(字节) */
  size: number;
  /* 图片宽度 */
  width: number;
  /* 图片高度 */
  height: number;
}

// 响应接口
export interface FileUploadRes {
  code: string;
  displayCode: string;
  message: string;
  data: UploadResultDto;
  tid: string;
  success: boolean;
}

/** 
 * 文件上传
 * @param {File} file - 文件对象
 * @param {'tmp' | 'store'} type - 存储类型
 * @returns
 */
export function uploadFile(file: File, type: 'tmp' | 'store' = 'tmp'): Promise<FileUploadRes> {
  const formData = new FormData();
  formData.append('file', file);
  return request.post(`/api/v1/file/upload?type=${type}`, formData, {
    headers: { 'Content-Type': 'multipart/form-data' }
  });
}