文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python接口自动化之文件上传/下载接口怎么实现

2023-06-29 20:36

关注

今天小编给大家分享一下Python接口自动化之文件上传/下载接口怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

〇、前言

文件上传/下载接口与普通接口类似,但是有细微的区别。

如果需要发送文件到服务器,例如:上传文档、图片、视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: multipart/form-data 数据类型,可以发送文件,也可以发送相关的消息体数据。

反之,文件下载就是将二进制格式的响应内容存储到本地,并根据需要下载的文件的格式来写文件名,例如:F:/合同文件.pdf。

一、文件上传接口

1. 接口文档

Request URL: /createbyfile

Request Method: POST

Content-Type: multipart/form-data

名称类型是否必须描述
fileFile文档文件
titleString文档名称
fileTypeString文件类型:doc, docx, txt, pdf, png, gif, jpg, jpeg, tiff, html, rtf, xls, txt

2. 代码实现

(1)实现步骤:

构造文件数据,通过open函数以二进制方式打开文件

文件上传接口参数与普通post请求一样,需要写成Key和Value模式,Key为参数名称file(也是组件的name属性),Value为一个元组(与普通接口不同的地方)

Python接口自动化之文件上传/下载接口怎么实现

"file": (    "", # 元组第一个值为文件名称,没有则取None    open(r"F:\pdf_file.pdf", "rb"), # 若第一个值非None,则取文件open打开的二进制流,否则直接写文件路径,如"F:\pdf_file.pdf"    "pdf" # 文件类型)
"file": (    None,    "F:\pdf_file.pdf")

构造其他数据

{    "title": "接口发起的文档",    "fileType": "pdf"}

发送请求,将文件数据以 files 参数传入,其他消息体数据通过 data 、json 、 headers 、 cookies 等传入

req = {            "url": "127.0.0.1/v2/document/createbyfile",            "method": "POST",            "headers": {},            "files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},            "data": {                "title": "接口发起的文档",                "fileType": "pdf"            }        }

(2)完整代码

base_api.py

import requestsclass BaseApi:    @staticmethod    def requests_http(req):        # ** 解包        result = requests.request(**req)        return result

api/createbyfile.py

# -*- coding:utf-8 -*-# 作者:IT小学生蔡坨坨# 时间:2022/3/12 21:04# 功能:根据文件类型创建合同文档from base_api import BaseApiclass Createbyfile:    def createbyfile(self):        req = {            "url": "127.0.0.1/createbyfile",            "method": "POST",            "headers": {},            "files": {"file": ("", open(r"F:\pdf_file.pdf", "rb"), "pdf")},            "data": {                "title": "接口发起的文档",                "fileType": "pdf"            }        }        res = BaseApi().requests_http(req)        assert res.status_code == 200        res_json = res.json()        return res_json["result"]["documentId"]if __name__ == '__main__':    Createbyfile().createbyfile()

二、文件下载接口

1. 接口文档

Request URL:/download

Request Method:GET

名称类型是否必须描述
contractIdLongIDID
downloadItemsString[]下载可选项,NORMAL(正文),ATTACHMENT(附件)
needCompressForOneFileBoolean是,默认单文件也压缩当下载的文件仅一份时,是否压缩

2. 代码实现

# -*- coding:utf-8 -*-# 作者:IT小学生蔡坨坨# 时间:2022/4/5 2:56# 功能:下载合同from base_api import BaseApiclass Download:    def download(self):        req = {            "url": "127.0.0.1/download",            "method": "GET",            "headers": {},            "params": {                "contractId": 2947403075747869536,                "downloadItems": ["NORMAL"],                "needCompressForOneFile": False            },        }        res = BaseApi().requests_http(req).content # 注意“.content"获取返回内容        # with open("F:/response.zip", "wb") as f:        with open("F:/response.pdf", "wb") as f:            f.write(res)        return resif __name__ == '__main__':    Download().download()

以上就是“Python接口自动化之文件上传/下载接口怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯