首页 > 其他分享 >requests上传文件

requests上传文件

时间:2023-09-01 20:22:43浏览次数:44  
标签:files 文件 __ file requests 上传

requests上传文件

目录

requests库中的files参数可以用来上传文件,它是一个字典类型的变量,其中键是文件的字段名,值可以是以下几种类型之一:

  • 字符串类型:表示文件路径,会自动打开文件并上传

  • 文件对象:可以通过 open() 函数获取

  • 元组类型:第一个元素是文件名,第二个元素是文件对象

  • 或者files是一个List[Dict] 一个嵌套列表

单文件上传

下面是一个使用files参数上传单个文件的例子

import requests

url = 'http://example.com/upload'
files = {'file': open('example.txt', 'rb')}
headers = {'content-type': 'multipart/form-data'}
response = requests.post(url, files=files, headers=headers)

多文件上传

如果要上传多个文件,可以在files参数中添加多个键值对,如下所示:

import requests

url = 'http://example.com/upload'
files = {'file1': open('example1.txt', 'rb'), 
         'file2': open('example2.txt', 'rb'),
         'file3': open('example3.txt', 'rb')
        }
response = requests.post(url, files=files)


# 或者采用LIST
import requests

url = 'http://example.com/upload'
files = [
    ('file1', ('example1.txt', open('example1.txt', 'rb'))),
    ('file2', ('example2.txt', open('example2.txt', 'rb'))),
    ('file3', ('example3.txt', open('example3.txt', 'rb')))
]
response = requests.post(url, files=files)

指定文件和类型

如果上传的文件是二进制文件,需要以二进制模式打开文件(即添加'rb'参数)。另外,如果上传的文件是图片或者其他媒体类型,可以在请求头中添加Content-Type字段来指定文件类型,例如:

import requests

url = 'http://example.com/upload'
headers = {'Content-Type': 'image/jpeg'}
files = {'file': ('example.jpg', open('example.jpg', 'rb'), 'image/jpeg')}
response = requests.post(url, headers=headers, files=files)

上面的例子中,将文件类型设置为image/jpeg,并且在文件元组中指定了文件名和文件类型

既要上传文件又要上传参数

import requests
 
url = 'http://example.com/upload_file'
file_path = '/path/to/file'
data = {'name': 'John', 'age': 30}
 
with open(file_path, 'rb') as f:
    files = {'file': f}
    headers = {'content-type': 'multipart/form-data'}
    response = requests.request('POST', url, files=files, data=data, headers=headers)
 
print(response.text)
 

文件接收

可以使用Flask的request对象来接收上传的文件。以下是一个示例,假设上传的文件字段名为file

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    # 保存文件到本地
    
    file.save('uploaded_file.txt')
    return 'File uploaded successfully'

if __name__ == '__main__':
    app.run()

在上面的代码中,我们使用request.files字典来获取上传的文件,然后使用save()方法将文件保存到本地。注意,save()方法需要指定保存的文件路径和文件名。如果上传的文件是二进制文件,可以使用stream=True参数来获取文件的二进制内容,例如:

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    # 获取二进制内容并保存到本地
    with open('uploaded_file.bin', 'wb') as f:
        f.write(file.stream.read())
    return 'File uploaded successfully'

if __name__ == '__main__':
    app.run()
    

参考资料

标签:files,文件,__,file,requests,上传
From: https://www.cnblogs.com/tian777/p/17672778.html

相关文章

  • Git使用教程-安装、配置、建立本地仓库、本地仓库的基本操作(查看工作区的文件状态,添加
    Git介绍一、为什么要学习Git?在开发一个软件时,这份工作通常需要一个team来完成。我们把这个软件划分为不同的模块,每个人负责一个模块的开发和维护。在这个过程中,如何保持team中成员软件开发的同步,保存开发周期中各个历史版本,解决team中成员间开发的版本冲突?Git是对这个问题......
  • 实用的文件编辑工具:UltraISO软碟通
    UltraISO软碟通是一个类似于WinISO的ISO文件编辑工具,UltraISO软碟通操作简单,界面简洁,用户可以用来制作启动光盘映像。不仅如此,UltraISO软碟通还可以用来处理ISO文件的启动信息,随心所欲烧录光碟。UltraISO软碟通软件简介UltraISO软碟通是一款功能强大而又方便实用的软碟文件制作/编......
  • java上传文件大小限制 java实现大文件上传
    ​ 一. 大文件上传基础描述:WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容。比如:框架中使用类似CommonsMultipartFile对象处理表二进制文件信息。.NET 中使用HtmlInputFile/ HttpPostedFile......
  • 看懂Maven的配置文件
    Maven是项目管理工具,作用:项目构建、依赖管理POM,(ProjectObjectModel),项目对象模型apache-maven-3.9.4\boot\plexus-classworlds-2.7.0.jar:Maven的类加载器Maven基础概念仓库放各种jar包仓库的分类本地仓库:计算机本地远程仓库:非本机的仓库,为本地仓库提供......
  • ansible-playbook剧本文件的编写
    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible架构相对比较简单,仅需通过SSH连接客户机执行任务即可,ansible是基于模块工作的,本身没有批量部署的能......
  • Selenium与requests共存的一个库 selenium-wire
    背景在工作中UI自动化中可能会需要用到API来做一些数据准备或清理的事情,那UI操作是略低效的,但API操作相对高效。而实战课就有这样一个案例,不过那个案例是UI操作和API分开的。极少会遇到这样的场景,我selenium操作网页,比如登录,应该底层也是有响应数据的,比如token之类的,那我是否可......
  • 5分钟带你回顾大文件分片以及异步计算hash的步骤
    背景  文件上传功能在中后台项目中是最常见的功能,分片上传是一种将大文件分割成多个小片段进行上传的技术,可以有效提高文件上传的速度和稳定性。思路  1.首先就是使用File.slice对文件进行分割产出一个数组用于存储每个小的chunk片段  2.异步计算hash值,可用作标识文......
  • 前端使用xlsx插件读取excel文件数据
    安装xlsx插件npminstallxlsx导入xlsximportXLSXfrom'xlsx'前端UI如下:<bk-upload:tip="'只允许上传JPG、PNG、JPEG的文件'":with-credentials="true":accept="'.xlsx,.xls'"@c......
  • 文件复制(断点续传)
    rsync的目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下文件的同步,但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。注意事项:目录名后有或没有/是很不同的,非常复杂。具体参考:cp拷贝文件夹时/的用法不是所有......
  • 判断文件夹名称是否为日期格式字符串 判断字符串是否为日期,并且是否早于指定日期
    '''清洗工具-判断文件夹名称是否为日期格式字符串'''#写入函数代码块之前,先加载相应模块,生成相应默认参数#Falseif(x=='')or(xin[None,pd.NaT])or(type(x)!=str)#无论是否指定format,pd.to_datetime(pd.NaT)都输出NaT#无论是否指定format,pd.to_datetime(N......