如何在Python中将base64编码的字符串转换为无磁盘I/O的文件(用于HTTP请求)

如何在Python中将base64编码的字符串转换为无磁盘I/O的文件(用于HTTP请求),python,python-requests,Python,Python Requests,我想通过Python中的请求库发送一个文件,它接受文件类型输入。这是我自己测试过的一段工作代码 FILES = [] f = open('/home/dummy.txt', 'rb') # f : <type 'file'> FILES.append(('file', f)) response = requests.post(url = 'https://dummy.com/dummy', headers = {'some_header':'content'}, data={'som

我想通过Python中的请求库发送一个文件,它接受文件类型输入。这是我自己测试过的一段工作代码

FILES = []
f = open('/home/dummy.txt', 'rb')
# f : <type 'file'>
FILES.append(('file', f))
response = requests.post(url = 'https://dummy.com/dummy', headers = {'some_header':'content'}, data={'some_payload':'content'}, files=FILES)
这就是我需要指定文件名的原因。

您可以使用:

下面是convert_base64_to_file函数:

import base64
import io
def convert_base64_to_file(data):
    return io.BytesIO(base64.b64decode(data))

为了完成Megalng answer,解决了我一半的问题,我们可以通过以下操作向构造的文件添加一个名称:

import base64
import io
def convert_base64_to_file(base64_string,filename):
    f = io.BytesIO(base64.b64decode(base64_string))
    f.name = filename
    return f

什么是将\u base64\u转换为\u文件?@MegaIng这是我正在寻找的一个虚构方法。我将base64\u字符串放在哪里?@William Better now?@Megalng好多了:,现在有一个问题,我的base64\u字符串中没有文件名信息,所以当我发送它时,它只会说“file”,如何模拟文件名?@William查看文件。附加'file',f您可以尝试更改什么来添加文件名,这不是'file'?@Megalng我知道您的意思,我已经更新了我的问题,基本上我需要为每个文件指定2个输入,名称和文件名。因为我正在尝试与一个需要我这样做的API进行通信。
import io
FILES = {}
f = io.BytesIO()
FILES{'file'] = ("dummy.txt", f)
response = requests.post(url = 'https://dummy.com/dummy', headers = {'some_header':'content'}, data={'some_payload':'content'}, files=FILES)
import base64
import io
def convert_base64_to_file(data):
    return io.BytesIO(base64.b64decode(data))
import base64
import io
def convert_base64_to_file(base64_string,filename):
    f = io.BytesIO(base64.b64decode(base64_string))
    f.name = filename
    return f