Есть необходимость создать мобильное приложение, которое будет сканировать штрихкод, фотографировать и отправлять на Flask сервер.
На данный момент есть следующий код на 1с:
соединение = Новый HTTPСоединение("192.168.3.143", 5000);
запрос = новый HTTPЗапрос("/test_binary");
путьКФайлу = КаталогВременныхФайлов() + "/временный.txt";
данныеФайла = Новый ДвоичныеДанные(путьКФайлу);
boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
запрос.УстановитьТелоИзДвоичныхДанных(данныеФайла);
ответ = соединение.ВызватьHTTPМетод("POST", запрос);
Показать
Flask:
@app.route('/test_binary', methods=['POST'])
def test_binary():
with open('test_binary.jpeg', 'wb') as f:
f.write(request.get_data())
return "Binary data received", 201
Данный код работает и сохраняет изображение. Но не понятно как добавить несколько других изображений и/или текст/текстовый файл. Пытался использовать метод УстановитьТелоИзСтроки
следующим образом:
соединение = Новый HTTPСоединение("192.168.3.143", 5000);
запрос = новый HTTPЗапрос("/test_binary");
путьКФайлу = КаталогВременныхФайлов() + "/временный.txt";
данныеФайла = Новый ДвоичныеДанные(путьКФайлу);
boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
телоЗапроса = "";
телоЗапроса = телоЗапроса + "--" + boundary + Символы.ПС;
телоЗапроса = телоЗапроса + "Content-Disposition: multipart/form-data; name=""photo"";
filename=""Autumn.jpeg""" + Символы.ПС;
телоЗапроса = телоЗапроса + "Content-Type: image/jpeg" + Символы.ПС + Символы.ПС;
телоЗапроса = телоЗапроса + данныеФайла + Символы.ПС;
телоЗапроса = телоЗапроса + "--" + boundary;
//---------------------------- Добавляю штрихкод --------------------------------
телоЗапроса = телоЗапроса + "Content-Disposition: form-data; name=""barcode"";
filename=""barcode.txt""" + Символы.ПС;
телоЗапроса = телоЗапроса + "Content-Type: text/plain" + Символы.ПС + Символы.ПС;
телоЗапроса = телоЗапроса + реквизитШтрихкод + Символы.ПС; // после сканирования, штрихкод
// сохраняется в реквизит
// нужно ли добавлять его в файл?
телоЗапроса = телоЗапроса + "--" + boundary;
запрос.УстановитьТелоИзСтроки(телоЗапроса);
ответ = соединение.ВызватьHTTPМетод("POST", запрос);
Показать
Flask:
@app.route('/test_binary', methods=['POST'])
def test_binary():
photo = request.files['photo']
photo.save('conf/extra/flask/Images/'+photo.filename)
return "Binary data received", 201
Даже без добавления Штрихкода (в коде его комментирую, здесь привел просто для примера), код не работает - возвращает ошибки 400 или 404 (Пробовал несколько вариантов отправки из 1с и по-разному принимал на Flask)
`request.form` и `request.files` не работают для меня. Как это можно исправить? и во flask и 1с?