|   |   | 
| 
 | Отправка файла HTTPСоединение | ☑ | ||
|---|---|---|---|---|
| 0
    
        SvenSoft 10.02.17✎ 21:46 | 
        Добрый вечер.
 Делаю отправку файла на веб-сервер (в примере текстовый файл, но на самом деле он может быть каким угодно): [code] тФайл = новый ТекстовыйДокумент; тФайл.ДобавитьСтроку("ля ля ля"); ПолноеИмяИсходящегоФайла = ПолучитьИмяВременногоФайла(".txt" ); тФайл.Записать(ПолноеИмяИсходящегоФайла,КодировкаТекста.UTF8); Попытка HTTPСоединение = Новый HTTPСоединение("test.ru"); Исключение Сообщить("Не удалось соединиться с сервером!"); Возврат Ложь; КонецПопытки; //ТелоЗапроса = Новый ДвоичныеДанные(ИмяИсходящегоФайла); ТелоЗапроса = Base64Строка(Новый ДвоичныеДанные(ПолноеИмяОтправляемогоФайла)); ФайлНаОтправление = Новый Файл(ПолноеИмяОтправляемогоФайла); ИмяФайла = ФайлНаОтправление.Имя; РазмерФайла = XMLСтрока(ФайлНаОтправление.Размер()); Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); КлючПоля = "datafile"; ЗаголовкиЗапроса = Новый Соответствие; ЗаголовкиЗапроса.Вставить("Content-Type","multipart/form-data; boundary=" + Boundary); // "application/x-www-form-urlencoded" "application/json" ЗаголовкиЗапроса.Вставить("Content-Length", РазмерФайла); ЗаголовкиЗапроса.Вставить("Content-Disposition", "form-data; name=""" + КлючПоля + """; filename=""" + ПолноеИмяОтправляемогоФайла + """"); ФайлОтправки = Новый ЗаписьТекста(ПолноеИмяОтправляемогоФайла, КодировкаТекста.UTF8, Символы.ПС, Ложь); ФайлОтправки.ЗаписатьСтроку("--" + Boundary); ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + КлючПоля + """; filename=""" + ИмяФайла + """"); ФайлОтправки.ЗаписатьСтроку("Content-Type: application/octet-stream" + Символы.ПС + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(ТелоЗапроса); ФайлОтправки.ЗаписатьСтроку("--" + Boundary + "--"); ФайлОтправки.Закрыть(); HTTPЗапрос = Новый HTTPЗапрос("api/file", ЗаголовкиЗапроса); HTTPЗапрос.УстановитьИмяФайлаТела(ПолноеИмяОтправляемогоФайла); HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); [/code] Но в $_FILES на сервере ничего не прилетает. Что я делаю не так? | |||
| 1
    
        Сергиус 10.02.17✎ 22:18 | 
        (0)А в HTTPОтвет какой статус возвращает?     | |||
| 2
    
        SvenSoft 10.02.17✎ 22:37 | 
        200     | |||
| 3
    
        Сергиус 11.02.17✎ 00:14 | 
        (2)Попробуй Wireshark'ом посмотреть что отправляется.     | |||
| 4
    
        SvenSoft 11.02.17✎ 14:26 | 
        > Попробуй Wireshark'ом посмотреть что отправляется.
 Не очень знаком с этим инструментом. Скажу так, что на этой же машине на этот же адрес сайта отправляю файл через Postman - все нормально, из 1С нет! | |||
| 5
    
        SvenSoft 11.02.17✎ 14:53 | 
        А вот что формируется в теле запроса кодом из листинга в первом посте:
 ФайлОтправки = Новый ЗаписьТекста(ПолноеИмяОтправляемогоФайла, КодировкаТекста.UTF8, Символы.ПС, Ложь); ФайлОтправки.ЗаписатьСтроку("--" + Boundary); ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + КлючПоля + """; filename=""" + ИмяФайла + """"); ФайлОтправки.ЗаписатьСтроку("Content-Type: application/octet-stream" + Символы.ПС + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(ТелоЗапроса); ФайлОтправки.ЗаписатьСтроку("--" + Boundary + "--"); ФайлОтправки.Закрыть(); --9df4aac7ad4b4197bf18dc6981c6c46f Content-Disposition: form-data; name="datafile"; filename="v8_D96B_4e.txt" Content-Type: application/x-octet-stream 77u/0LvRjyDQu9GPINC70Y8NCg== --9df4aac7ad4b4197bf18dc6981c6c46f-- | |||
| 6
    
        Мимохожий Однако 11.02.17✎ 15:04 | 
        Синтаксис:
 Новый HTTPСоединение(<Сервер>, <Порт>, <Пользователь>, <Пароль>, <Прокси>, <Таймаут>, <ЗащищенноеСоединение>, <ИспользоватьАутентификациюОС>) | |||
| 7
    
        SvenSoft 11.02.17✎ 15:17 | 
        И только первый параметр обязателен, все остальные мне по умолчанию подходят.     | |||
| 8
    
        SvenSoft 11.02.17✎ 15:21 | 
        остальные запросы GET, РUT, POST (кроме отправки файла) нормально отрабатывают, проблема только с отправкой файла.     | |||
| 9
    
        oleg_km 12.02.17✎ 19:24 | 
        Сравни Fiddler ом. Сразу увидишь в чем дело     | |||
| 10
    
        Сергиус 13.02.17✎ 01:40 | 
        (4) Да там все интуитивно понятно, качни - и хоть понятно будет, отправляется что-то или нет.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |