通过直接通过缓冲区处理文件来获得与从本地空间读取相同的结果

时间:2019-06-05 08:02:56

标签: python django encode web-development-server webdev.webserver

这是一个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上运行。

0 个答案:

没有答案