|
v7: Загрузка файла на сервер | ☑ | ||
---|---|---|---|---|
0
felix_2013
19.11.12
✎
16:13
|
Добрый день. Пытаюсь сделать выгрузку файла на сервер с помощию 1с 7.7 ( для 8ки уже реализовал похожее решение , а 7ка чёта брыкается).
Вообщем код обработки: Процедура ПриОткрытии() Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "Base64.dll")=0 Тогда Сообщить("Не удается загрузить Base64.dll!"); Возврат; Иначе Сообщить("Удалось загрузить Base64.dll!"); КонецЕсли; КонецПроцедуры // ПриОткрытии // Преобразует файл в Base64 строку Функция Base64(ПутьКФайлу) Попытка ВК = СоздатьОбъект("AddIn.Base64"); Исключение Сообщить("Не удается создать объект AddIn.Base64!"); а=1/0; КонецПопытки; СтрокаИзФайла = ВК.ЗакодироватьBase64(ПутьКФайлу); Возврат СтрокаИзФайла; КонецФункции // Base64 Процедура Сформировать() //Используем объект winhttprequest для создания HTTP-запросов к серверу httpRequest = СоздатьОбъект("winhttp.winhttprequest.5.1"); Boundary = "28405758029000"; ФайлДанных = "data.txt"; ПутьКФайлуДанных = КаталогПользователя() + ФайлДанных; // Используем внешнюю компоненту Base64.dll для преобразования строки СтрокаBase64 = Base64(ФайлДанных);// Интересно, Если СтрокаBase64 = "" Тогда //если размер строки больше 385 Кб 1С вылетает... Сообщить("Файл " + ПутьКФайлуДанных + " не содержит ни одной строки!","!"); Возврат; КонецЕсли; //Определяем раздел двоичных данных и указываем имя файла для передачи Text1 = "--" + Boundary + " //Соответствует HTML-тэгу <input type="file" name="data"> //Поле filename указывает на раздел передачи файла |Content-Disposition: form-data; name=""data""; filename=""" + ФайлДанных + """ |Content-Type: application/xml;" + РазделительСтрок + РазделительСтрок + " |" + СтрокаBase64 + РазделительСтрок + " //Определяем раздел для других POST-данных, //например содержимого полей виртуальной HTML-формы. |--" + Boundary + " //Соответствует HTML-тэгу <input type="text" name="user" id="user"> |Content-disposition: form-data; name=""user""" + РазделительСтрок + РазделительСтрок + " |*****" + РазделительСтрок + " |--" + Boundary + " //Соответствует HTML-тэгу <input type="text" name="pswd" id="pswd"> |Content-disposition: form-data; name=""pswd""" + РазделительСтрок + РазделительСтрок + " |*****" + РазделительСтрок + " |--" + Boundary + "--"; httpRequest.open("POST", "http://webconto.by/Data_menu/vigr.php", 0); httpRequest.setRequestHeader("Content-Type","multipart/form-data;boundary=" + Boundary); httpRequest.setRequestHeader("Content-Length", СтрДлина(Text1)); httpRequest.send(Text1);// Интересно, если размер строки больше 385 Кб 1С вылетает... if (httpRequest.Status = 200) then Ответ = httpRequest.ResponseText;//Ответ приходит, когда в file.php используем echo endif; КонецПроцедуры Тут похоже какая то лажа происходит с POST запросом. Суть обработки - отправить файл на сервер, а там уе с помощью php его подхватить и записать. Моет кто сталкивался с похожей проблемой ? |
|||
1
Морковка
19.11.12
✎
16:26
|
а в чем лажа-то заключается? у меня аналогичная штука работает, и в тексте вроде ничего криминального. Может с самой отправляемой строкой что-то не так?
|
|||
2
felix_2013
19.11.12
✎
16:36
|
Вот без понятия ) Морковка , можете скинуть пожалуйста свою обработку ? [email protected]
|
|||
3
Морковка
19.11.12
✎
16:44
|
(2) не, свою не скину, да и там много кода и по большей части он к отправке не относится
А вообще ты же сам понимаешь что лажа? Может лажа вообще на принимающей стороне? |
|||
4
felix_2013
19.11.12
✎
17:15
|
нет , на принимающей всё впорядке... я видимо немного неправильно формирую запрос
|
|||
5
ptrtss
20.11.12
✎
10:01
|
Если есть возможность запустить данный скрипт в ручном режиме, то можно перехватить (заснифить) запросы которые шлет браузер и сделать по аналогии
К примеру, http://www.wireshark.org |
|||
6
felix_2013
20.11.12
✎
10:44
|
Что то начал химичить и теперь пишет:
WinHttp.WinHttpRequest: Не удаётся выполнить запрос на перенаправление протокола HTTP |
|||
7
ptrtss
20.11.12
✎
11:19
|
Откуда уверенность что на сервисе все в порядке?
|
|||
8
felix_2013
20.11.12
✎
12:46
|
8 ка аналогичным образом передаёт файлы туда...
|
|||
9
ptrtss
20.11.12
✎
14:03
|
Ну дык заснифь запросы, восьмера то поди WinHttpRequest не пользует
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |