У меня есть локальный файл Python, который декодирует двоичные файлы.Этот файл Python сначала читает из файла, открывает его как двоичный файл, а затем сохраняет его в буфере и интерпретирует его.Чтение это просто:
with open(filepath, 'rb') as f:
buff = f.read()
read_all(buff)
Это прекрасно работает локально.Теперь я хотел бы настроить работу Azure Python, где я могу отправить файл, ок.100 КБ, через HTTP POST, а затем прочитайте интерпретированные метаданные, что хорошо работает мой оригинальный скрипт на python.
Сначала я удалил функцию чтения, так что теперь я буду работать только с буфером.В моем задании Python Azure у меня есть следующее, вызванное HttpRequest
my_data = reader.read_file(req.get_body())
Чтобы проверить мою отправку, я попробовал следующее в python
import requests
url = 'http://localhost:7071/api/HttpTrigger'
files = {'file': open('test', 'rb')}
with open('test', 'rb') as f:
buff = f.read()
r = requests.post(url, files=files) #Try using files
r = requests.post(url, data=buff) #Try using data
Я также пробовал вПочтальон добавляет файл в тело в виде двоичного файла и устанавливает заголовки в application / octet-stream
Все это не отправляет двоичный файл так же, как это делал оригинальный f.read ().Таким образом, я получаю неверную интерпретацию двоичного файла.
Что такое file.read делает иначе, чем то, как я отправляю его в виде сообщения HTTP Body?
Распечатка первогострока из локального файла чтения Python дает.
b'\n\n\xfe\xfe\x00\x00\x00\x00\\\x18,A\x18\x00\x00\x00(\x00\x00\x00\x1f\x00\x00\
В то время как распечатка его в req.get_body () показывает мне
b'\n\n\xef\xbf\xbd\xef\xbf\xbd\x00\x00\x00\x00\\\x18,A\x18\x00\x00\x00(\x00\x00\x00\x1f\x00\
Так что что-то явно не так.Любая помощь, почему это может быть иначе?
Спасибо
РЕДАКТИРОВАТЬ:
Я реализовал аналогичную функцию во Flask, и она работает хорошо.Код в колбе просто захватывает файл из POST.Нет кодирования / декодирования.
if request.method == 'POST':
f = request.files['file']
#f.save(secure_filename(f.filename))
my_data = reader.read_file(f.read())
Чем отличается функция Azure?