|
|
|
Как подключиться к сайту 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 и тело запроса из двоичных данных прекрасно работают |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |