通过直接通过bu处理文件,获得与从本地空间读取相同的结果

2024-09-29 01:19:52 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个web应用程序,由Python3.7和Django开发。它需要从用户检索音频文件,然后该文件将由Base64UrlEncode方法处理并发送到第三方api

api仅接受从io.BufferedReader读取的已处理结果文件。当前的工作方法是将文件保存到服务器的本地空间,打开它,然后通过io.BufferedReader读取并处理返回值以获得结果文件。api成功接受该文件后,该文件将被删除

有没有什么方法可以让我不必从服务器的本地空间打开文件,而是直接通过缓冲区处理它

我尝试使用InMemoryUploadedFile.read()然后通过Base64UrlEncode处理它,但api不接受它

这是工作代码,api接受发送给它的文件:

def getBody(filepath):
binfile = open(filepath, 'rb')
data = {'audio': base64.b64encode(binfile.read())}
print(data)
print('data:{}'.format(type(data['audio'])))
# print("type(data['audio']):{}".format(type(data['audio'])))
return data


aue = "raw"

engineType = "sms16k"

audioFilePath = r"C:\Users\HiWin10\Desktop\pytes\tessstdd.wav"
r = requests.post(URL, headers=getHeader(aue, engineType), data=getBody(audioFilePath))

我试着改变

binfile = open(filepath, 'rb')
data = {'audio': base64.b64encode(binfile.read())}

binfile = request.FILES.get('upfile')
data = {'audio': base64.b64encode(binfile.read())}

api不接受它,因为两个binfile是不同的对象

该应用程序预计将在centos 7.3和windows 10上运行


Tags: 文件方法ioapi应用程序readdatatype