场景描述

在工作中经常需要把一些文件上传到服务器,以方便使用和管理,如:将文件上传到腾讯云的对象存储(COS)。那么该如何使用Python实现文件上传呢?

方案一

import requestsclass Upload:def __init__(self):"""基础配置"""# 请求头self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}# 上传链接self.upload_url = 'https://api.test.cn/upload'  # POST方法def upload(self):"""上传文件"""data = {'bucketName': 'test','objectName': '测试附件.xlsx','fileDownloadName': '测试附件.xlsx',}files = {'file': open('测试文件.xls', 'rb')}res = requests.post(url=self.upload_url, headers=self.headers, data=data, files=files)print(res.json())if __name__ == '__main__':upload = Upload()upload.upload()

方案二

import os
import sysimport pymysql
import requests
import you_getclass Upload:def __init__(self):"""基础配置"""# 请求头self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'}# 上传链接self.upload_url = 'https://api.test.cn/upload'  # POST方法def update_data(self):"""更新数据,补全数据库中视频对应的oss链接"""connection = pymysql.connect(host='host',user='user',password='password',database='db',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)with connection:with connection.cursor() as cursor:# 获取所有数据cursor.execute('select id, video_title, video_url, video_oss  from video_bilibili;')for item in cursor.fetchall():if not item.get('video_oss'):print('*' * 60)# 下载视频print(item.get('video_title'))self.download(item.get('video_url'), item.get('video_title'))# 上传视频if video_oss := self.upload(item.get('video_title')):# 编辑SQL语句sql = f"update video_bilibili set video_oss='{video_oss}' where id={item.get('id')};"# 执行SQL语句,更新数据try:cursor.execute(sql)connection.commit()except Exception as e:print(e)print(item)def download(self, url, filename):"""下载视频"""sys.argv = ['you-get', '-O', filename, url]you_get.main()def upload(self, title):"""上传文件"""files = [('files', (f'{title}.mp4',  # 文件名称open(f'{title}.mp4', 'rb'),  # 读取文件'application/octet-stream'))]# 上传文件response = requests.post(url=self.upload_url, headers=self.headers, files=files)if response.json().get('code') == 200:video_oss = response.json().get('data')[0].get('urlPath')# 删除已下载的数据for file in os.listdir():if os.path.splitext(file)[1] == '.mp4' or os.path.splitext(file)[1] == '.xml':os.remove(file)# 返回oss链接return video_ossif __name__ == '__main__':upload = Upload()# upload.upload('上传测试文件')upload.update_data()

说明:该过程使用requests模拟了在Postman中使用form-data上传文件的过程。
流程:先使用you-get根据数据库中存储的第三方视频链接将视频下载下来,然后再使用upload方法将视频上传至oss,这时会获取到oss链接,最后将获取到的oss链接更新到对应的数据库中即可。
注意:具体操作根据实际情况而定,这里只提供思路。

参考链接

  • 更加复杂的 POST 请求
  • POST一个多部分编码(Multipart-Encoded)的文件
  • requests toolbelt

Python如何上传文件?相关推荐

  1. Python请求上传文件接口

    Python 请求上传文件接口 def post_multipart_request():params = {"key1": "value1", "k ...

  2. python requests 上传文件_Python requests上传文件实现步骤

    工作中涉及到一个功能,需要上传附件到一个接口,接口参数如下: 使用http post提交附件 multipart/form-data 格式,url : http://test.com/flow/upl ...

  3. python fabric上传文件夹_通过python的fabric包完成代码上传部署(简单版)

    首先是安装fabric包pip install fabric fabric常用参数 -l : 显示定义好的任务函数名 -f : 指定fab入口文件,默认入口文件名为fabfile.py -H : 指定 ...

  4. python post 上传文件_python接口自动化7-post文件上传

    前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...

  5. python flask上传文件_Python之利用Flask上传文件、Flask_RESTful

    Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...

  6. python post 上传文件_Python通过POST方式上传文件及提交参数到远程服务器

    前言 在树莓派开发过程中,因为没有公网IP,为了方便访问获取信息,有时候我们需要将树莓派获取到的一些数据或文件上传到云端服务器.这是一个比较简便的方法. Python代码 需要用到requests库, ...

  7. Python Ftp上传文件

    #!/usr/bin/python # -*- coding: UTF-8 -*-from ftplib import FTP import os import sys import time imp ...

  8. python flask上传文件_flask 文件上传(单文件上传、多文件上传)--

    文件上传 在HTML中,渲染一个文件上传字段只需要将标签的type属性设为file,即. 这会在浏览器中渲染成一个文件上传字段,单击文件选择按钮会打开文件选择窗口,选择对应的文件后,被选择的文件名会显 ...

  9. python requests 上传文件_Fastapi 上传多个文件(包含服务器端和python客户端代码)...

    Fastapi有上传多个文件的接口代码,亲测可用.缺点是:使用浏览器接口文档操作比较方便,如果客户端没有浏览器,使用python写的代码来上传文件,则调了很久都调不成功.Fastapi官方链接:Fas ...

  10. python web 上传文件

    python上传文件 一..写html文件(文件名为upfile.html)" <meta charset="UTF-8"><title>上传文件 ...

最新文章

  1. 博客园自定义页面风格设计 后续篇(页面设计模式及代码高亮 鼠标点击效果升级)...
  2. 学数学,你要如何过题海:游泳?冲浪?划小船?开游艇?
  3. P4051-[JSOI2007]字符加密【SA】
  4. java invoke 泛型_利用Java反射机制和泛型,全自动解析json
  5. itchat python_itchat-python搭建微信机器人(附示例)
  6. oracle中job无法正常运行,如何排查
  7. Transformations on DStreams之transform的使用 实现黑名单操作/指定过滤
  8. bzoj 1296: [SCOI2009]粉刷匠(DP+DP)
  9. Android手机root概念
  10. python哈姆雷特英文词频统计_MOOC《Python语言程序设计》第6周练习题
  11. pod install pod update
  12. 远程服务器窗口调大,远程桌面缩放
  13. Spring官网下载最新jar包
  14. 解决CAS 4.2.7 版本集群部署的各种问题
  15. 如何用手机修改证件照尺寸大小
  16. 手动实现循环神经网络RNN,神经网络rnn是什么意思
  17. 解决CMD命令行窗口不显示颜色问题python
  18. Jetpack Compose入门详解(实时更新)
  19. 实验二实验结论实验总结与体会
  20. 湮没在赞誉之中,科学史上鲜为人知的五大“败笔”

热门文章

  1. 用代码来模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,一个售票点用一个线程表示
  2. node2vec: 图数据的嵌入方法
  3. 蛋白+小分子配体md(详细保姆教程)
  4. 使用网云穿「内网穿透」实现外网访问内网瑞友天翼等软件
  5. discuz 论坛DIY增加{lastposter}最后回复者以及{forumicon}版块图标调用解读
  6. PAT 计算机程序设计能力考试
  7. 科学研究设计一:什么是科学
  8. 在线教育市场为何因“最强雾霾”得利?
  9. linux 记账软件下载,净蓝记账app手机版下载-净蓝记账软件官方版v1.0.02-Linux公社...
  10. jsp项目如何定位当前页面是哪个jsp