Это веб-приложение, разработанное на 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 не принимает его, потому что два bin-файла являются разными объектами.
Ожидается, что это приложение будет работать на Centos 7.3 и Windows 10.