Python通过Requests模块上传文件并请求接口

接口返回示例

{
    "status": "0",
    "msg": "成功",
    "data": "操作成功"
}

定义调用该接口函数

import requests
import json

# 调用http://127.0.0.1:8080/file/upload接口,返回升级包地址、大小、md5信息
# 登陆网页获取请求数据
host = {"test":"https://test-xxx/upgrade-server", "online":"https://lc-xxx/upgrade-server"}

choose = host['test']


def fileUpload(file_path, file_name):

    url = choose + "/file/upload"
    files=[
  ('file',(file_name,open(file_path + file_name,'rb'),'application/octet-stream'))
]

    version = "8.0.0"
    data = {"version": version}
    headers = {}
    try:
        re = requests.post(url=url, data=data,  files=files, headers=headers)
        print(re.text)  # text, 获取接口响应值里面的数据

        re_json = re.json()
        fileSize = re_json['data']['fileSize']
        filePath = re_json['data']['filePath']
        fileMd5 = re_json['data']['fileMd5']
        return fileSize, filePath, fileMd5

    except Exception as e:
        print(e)
        pass

postman可以查看对应dorm-data形式上传参数的对应语言代码

在这里插入图片描述

在views中进行请求

def fileUpload(version, file):
    url = choose + "/file/upload"
    # files = [file_name]
    print(file)
    # 当我们发现请求接口失败时,去对照原来的脚本,发现接口所需的file是一个列表,列表中的每个元素是以远足的形式储存,所以通过下面的方式进行转换
    # <class 'tuple'>
	# ('file', ('app-common-release.apk', <_io.BufferedReader name='/Users/。。。/app-common-release.apk'>,,'application/octet-stream'))
    files = [
        ('file', (file.name, file, 'application/octet-stream'))
    ]
    data = {"version": version}
    headers = {}

    try:
        # print("files: ", type(file_name))
        # files:  <class 'django.core.files.uploadedfile.TemporaryUploadedFile'>
        print("version: ", version)
        re = requests.post(url=url, data=data,  files=files, headers=headers)
        print(re)

        # re = requests.post(url, files=files)
        re_json = re.json()

        fileSize = re_json['data']['fileSize']
        filePath = re_json['data']['filePath']
        fileMd5 = re_json['data']['fileMd5']

        arr = {}

        arr['fileSize'] = fileSize
        arr['filePath'] = filePath
        arr['fileMd5'] = fileMd5

        arr = json.dumps(arr)

    
        return HttpResponse(arr, content_type='application/json')
      

    except Exception as e:
        print(e)
        pass
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值