文件上传/下载接口开发
接口特性
文件传输接口与传统接口的核心差异体现在数据传输格式:
- 上传接口采用 multipart/form-data 格式支持二进制文件传输
- 下载接口接收二进制流并实现本地文件存储
文件上传接口开发
接口规范
请求地址:/createbyfile
请求方式:POST
内容类型:multipart/form-data 参数说明:
┌───────────┬─────────┬───────┬────────────────────────────┐
│ 参数名称 │ 类型 │ 必填 │ 说明 │
├───────────┼─────────┼───────┼────────────────────────────┤
│ file │ File │ 是 │ 待上传文档文件 │
│ title │ String │ 是 │ 文档名称 │
│ fileType │ String │ 是 │ 支持13种标准文件格式 │
└───────────┴─────────┴───────┴────────────────────────────┘
代码实现关键点
- 文件参数构造
# 元组结构说明(参数名,文件对象,MIME类型)
"files": {"file": ("自定义文件名.pdf", open(r"F:\pdf_file.pdf", "rb"), "pdf")
}
- 混合参数请求
req = {"url": "127.0.0.1/v2/document/createbyfile","method": "POST","files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},"data": {"title": "接口发起的文档","fileType": "pdf"}
}
完整实现示例
# base_api.py
import requestsclass BaseApi:@staticmethoddef send_request(req):return requests.request(**req)# createbyfile.py
class FileUploader:def execute_upload(self):request_config = {"url": "127.0.0.1/createbyfile","method": "POST","files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},"data": {"title": "接口文档", "fileType": "pdf"}}response = BaseApi.send_request(request_config)response.raise_for_status()return response.json()["result"]["documentId"]
文件下载接口开发
接口规范
请求地址:/download
请求方式:GET 参数说明:
┌───────────────────────┬───────────┬───────┬────────────────────────────┐
│ 参数名称 │ 类型 │ 必填 │ 说明 │
├───────────────────────┼───────────┼───────┼────────────────────────────┤
│ contractId │ Long │ 是 │ 合同唯一标识 │
│ downloadItems │ String[] │ 否 │ 下载内容选项 │
│ needCompressForOneFile│ Boolean │ 是 │ 单文件压缩控制 │
└───────────────────────┴───────────┴───────┴────────────────────────────┘
核心实现逻辑
class FileDownloader:def fetch_file(self):request_params = {"contractId": 2947403075747869536,"downloadItems": ["NORMAL"],"needCompressForOneFile": False}response = BaseApi.send_request({"url": "127.0.0.1/download","method": "GET","params": request_params})with open("F:/contract.pdf", "wb") as file:file.write(response.content)return response.content