这是一个Web应用程序,由Python 3.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上运行。