|
Как подключиться к сайту PHP из 1С? | ☑ | ||
---|---|---|---|---|
0
SpLorT
17.10.24
✎
11:43
|
Помогите пожалуйста. Как подключиться к сайту php из 1С?
ВОТ КОД 1С: HTTPСоединение = Новый HTTPСоединение(""); ДвоичныеДанные = Новый ДвоичныеДанные(ФайлPNG); ФайлBase64 = Base64Строка(ДвоичныеДанные); ИмяФайлаОтправки = ПолучитьИмяВременногоФайла(); Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.UTF8, Символы.ПС, Ложь); ФайлОтправки.ЗаписатьСтроку("--" + Boundary); ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; file_data=""file_data"""); ФайлОтправки.ЗаписатьСтроку("Content-Type: image/png" + Символы.ПС + Символы.ПС); ФайлОтправки.ЗаписатьСтроку(ФайлBase64); ФайлОтправки.ЗаписатьСтроку("--" + Boundary); ФайлОтправки.Закрыть(); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Boundary); HTTPЗапрос = Новый HTTPЗапрос("report.tmotor.ru/report/php/tel_upload.php",ЗаголовокHTTP); //HTTPЗапрос.УстановитьИмяФайлаТела(ФайлНаОтправку.ПолноеИмя); Результат = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос,ИмяФайлаОтправки); Если Результат.КодСостояния = 200 Тогда Тест = Результат.ПолучитьТелоКакСтроку(); КонецЕсли; ВОТ КОД PHP ФАЙЛА: <?php session_start(); if (!isset($_POST['file_data']) || !isset($_POST['file_name'])) { if (!isset($_POST['file_data'])) { echo "Файл рисунка нет"; } if (!isset($_POST['file_name'])) { echo "Имя файла нет"; } exit; } $fileData = $_POST['file_data']; $fileName = $_POST['file_name']; echo "Файл успешно загружен: " . htmlspecialchars($fileName); ?> |
|||
1
Волшебник
17.10.24
✎
11:45
|
В чём проблема?
|
|||
2
SpLorT
17.10.24
✎
11:47
|
(1) не передается файл и обратной связи в 1С не получаю(echo "Файл успешно загружен: ")
|
|||
3
Волшебник
17.10.24
✎
11:51
|
(2) Сделайте тестовый скрипт без передачи файла. Добейтесь ответа 200.
|
|||
4
SpLorT
17.10.24
✎
12:38
|
ответ 200 приходит но файл не подгружается
|
|||
6
Волшебник
17.10.24
✎
11:53
|
(4) В Вашем PHP-скрипте нет команды сохранения файла
|
|||
7
SpLorT
17.10.24
✎
11:55
|
а как же вот эта часть кода?
$filePath = "../report/raschet_list/". $file_name. ".png"; если что я не писал php файл занимаюсь только интеграцией из 1С так что не подскажу что в коде php находится |
|||
8
SpLorT
17.10.24
✎
11:55
|
мне нужно понять только одно на моей стороне как 1С-ника что не так написано
|
|||
9
Звездец
17.10.24
✎
12:27
|
ну так сначала попробуй сайт дернуть например постманом, чтобы понять работает скрипт или нет
|
|||
10
Волшебник
17.10.24
✎
12:27
|
(7) Это присвоение значения переменной
|
|||
11
Hmster
17.10.24
✎
12:42
|
В чем прикол гонять данные через Base64? Почему очень многие любят так делать?
|
|||
12
Мультук
гуру
17.10.24
✎
12:43
|
1) Как минимум имя сайта тут не надо
HTTPЗапрос = Новый HTTPЗапрос("report.tmotor.ru/report/php/tel_upload.php",ЗаголовокHTTP); 2) Возьмите уже https://github.com/vbondarevsky/Connector Там всё уже написано за вас |
|||
13
Мультук
гуру
17.10.24
✎
12:58
|
||||
14
Garykom
гуру
17.10.24
✎
13:30
|
(11) Потому что протокол wiki:HTTP только текстовые данные
Все символы, что не влазят (например двоичные данные), приходится оборачивать в Base64 |
|||
15
Garykom
гуру
17.10.24
✎
13:32
|
(14)+ Тяжкое наследие прежних времен с кучей ограничений
Давно уже придуман wiki:HTTP/2 В отличие от предыдущих версий, протокол HTTP/2 является бинарным
И даже wiki:HTTP/3 |
|||
16
Мультук
гуру
17.10.24
✎
14:00
|
(15)
Это что то вроде ipv6, придумали, порадовались, поцокали языками и внедряют до сих пор ? |
|||
17
sikuda
17.10.24
✎
14:41
|
(10) Вот именно, человек подумал что про сразу все поймет и в 1С и в php 🤦
Примет тестового сайта для загрузки картинок... https://sikuda.ru/php/img_host/ Код загрузки взятый из интернета но не до конца осознанный... <?php $target_dir = "uploadimages/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // Check if file already exists if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // Check file size if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; // if everything is ok, try to upload file } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { header('Location: show_result.php?pic='.$target_file); echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?> |
|||
18
Krendel
17.10.24
✎
14:37
|
А где Паша Мидер Тарзан?
|
|||
19
Garykom
гуру
17.10.24
✎
15:31
|
(16) ipv6 уже много где работает
проблема в том что отказываться от ipv4 не хотят точно так же с HTTP/1.X |
|||
20
sikuda
17.10.24
✎
15:35
|
(19) А разве в 1С:Предприятии 8.3 можно по HTTP/2?
|
|||
21
Garykom
гуру
17.10.24
✎
15:39
|
||||
22
Hmster
17.10.24
✎
16:23
|
Не знаю про версию HTTP, но бинарники спокойно гоняются уже много лет.
Content-Type: application/octet-stream и тело запроса из двоичных данных прекрасно работают |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |