当前位置: 首页 > news >正文

文件上传/下载接口开发

接口特性

文件传输接口与传统接口的核心差异体现在数据传输格式:

  • 上传接口采用 multipart/form-data 格式支持二进制文件传输
  • 下载接口接收二进制流并实现本地文件存储

文件上传接口开发

接口规范

请求地址:/createbyfile  
请求方式:POST  
内容类型:multipart/form-data  参数说明:
┌───────────┬─────────┬───────┬────────────────────────────┐
│ 参数名称  │ 类型    │ 必填  │ 说明                       │
├───────────┼─────────┼───────┼────────────────────────────┤
│ file      │ File    │ 是    │ 待上传文档文件             │
│ title     │ String  │ 是    │ 文档名称                   │
│ fileType  │ String  │ 是    │ 支持13种标准文件格式        │
└───────────┴─────────┴───────┴────────────────────────────┘

代码实现关键点

  1. 文件参数构造
# 元组结构说明(参数名,文件对象,MIME类型)
"files": {"file": ("自定义文件名.pdf", open(r"F:\pdf_file.pdf", "rb"), "pdf")
}

  1. 混合参数请求
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


http://www.xdnf.cn/news/912061.html

相关文章:

  • Python训练第四十六天
  • 将内网地址转换成外网地址,让局域网外也能访问本地服务资源
  • 第21讲、Odoo 18 配置机制详解
  • 双面沉金PCB应用:打造卓越电子设备的黄金工艺
  • Android第十四次面试总结
  • Redis 哨兵模式
  • 【Qt】:设置新建类模板
  • [Python学习日记-90] 并发编程之多线程 —— 线程理论
  • 大模型编程助手-Cline
  • 沉金电路板工艺解析——化学沉金的优势与挑战
  • 使用python写一个虚拟的舵机模拟器
  • 经典文献阅读之--LidaRefer(基于变换器的自动驾驶户外3D视觉定位)
  • Onenet云网关方案应用--基于米尔瑞芯微RK3576开发板
  • (附示例代码及图示)问题分解策略提升复杂问题检索正确率
  • 【公益护航青春路】 “成长的秘密花园”青春期身心成长讲座走进校园
  • 肖特基二极管的特性
  • 森马下沙奥莱旗舰店盛大启幕:以“新常服“理念重塑消费体验新范式
  • 2025.06.06【Ribo-seq】|riboWaltz:P-site定位与三碱基周期性分析流程
  • OpenLayers 地图定位
  • 好子集的数目概念及表达形式
  • 数据库精选题(四)(E-R模型)
  • 基于nacos2.5.1的MCP服务端微服务项目开发环境配置简介
  • 提升CPU、内存及磁盘利用率脚本
  • 群晖文件操作API
  • 自然语言处理的发展
  • (33)课54--??:3 张表的 join-on 连接举例,多表查询总结。
  • MyBatis————入门
  • 【SSM】MyBatisPlus笔记:快速上手MyBatisPlus
  • C++算法动态规划3
  • VUE前端实现自动打包成压缩文件