Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
1

Как правильно получить (сохранить) файлы через 1с soap?

04.12.2018, 12:52. Просмотров 334. Ответов 13

Добрый день! такой вопрос:
Я получаю в битрикс из 1С по soap pdf файлы, как мне их правильно сохранить (получить), выводит каракули на экран, а если пытаюсь через file_put_contents, то не открывает файл,мол поврежден... Спасибо

Добавлено через 6 минут
Код

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$mi = new OlkRestClient();
$mi::init();
 
$data = $mi::$client->PrintTERCargoLabel();
 
$res = $data->return->Вложение;
 
 
 
 
foreach($res as $key => $file){
 
$toDay  = $date = date('Y-m-d H:i:s');
 
// имя файла произвольное ...
$name = "archive_".$toDay."_XXXXX_.pdf";
 
// путь куда будем сохранять файл
$rute    = "./".$name;
 
// декодируем base64
$pdf_b64 = base64_decode($file->Файл);
// сохраняем файл
if(file_put_contents($rute, $pdf_b64)){
    //выгружаем на страницу сайта
    header("Content-type: application/pdf");
 
    //выводим результат
    echo $pdf_b64;
}else{
    echo "Error";
}
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2018, 12:52
Ответы с готовыми решениями:

Как получить данные от wcf сервиса через SOAP
Имеется wcf service. Необходимо вызвать его метод и получить данные. Возможно ли это сделать через...

Как правильно сохранить файлы с нужными именами
Здравствуйте уважаемые форумчани. Есть два файла File1.txt и File2.txt в одном текст (отдельные...

Как правильно сохранить файлы на сервер при обрыве интернет-соединения во время закачки
Доброго времени суток. Есть WСF сервис (.net 4.5), который периодически проверяет файлы в одной...

PHP Session, как правильно получить GET параметр и сохранить его в сессии
Здравствуйте, есть две странички на первой ссылка с параметром, по нажатию осуществляется переход...

Как получить доступ к файлам через сетевую папку (создать файлы в сетевой или просто получить список)?
Как получить доступ к файлам через сетевую папку (создать файлы в сетевой или просто получить...

13
voral
917 / 614 / 135
Регистрация: 16.03.2008
Сообщений: 2,920
04.12.2018, 13:02 2
ну так вы не пытайтесь их вывести на страницу. Только тут битрикс не причем... По крайней мере из вашего сообщения не понятно куда хотите сохранить и как использовать
0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
04.12.2018, 13:50  [ТС] 3
Файл который сохраняется, пишет что pdf поврежден и тп.
0
voral
917 / 614 / 135
Регистрация: 16.03.2008
Сообщений: 2,920
04.12.2018, 13:55 4
Может какая то беда в классе OlkRestClient...
0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
04.12.2018, 14:09  [ТС] 5
Так это я по ходу неправильно объясняю:
Есть wsdl , я к нему подключаюсь и получаю его методы, один из методов (PrintTERCargoLabel()) при вызове возвращает pdf файл(ы), я их получаю, 1С - программист сказал что он их кодирует в base64, но как правильно сохранить не пойму
0
voral
917 / 614 / 135
Регистрация: 16.03.2008
Сообщений: 2,920
04.12.2018, 14:16 6
Сохраняете правильно. (повторюсь Битрикс тут вообще не при делах). Значит какая то беда именно при передаче или кодировании/раскодировании. Откройте исходный файл, например блокнотом (если винда), и откройте получившийся rute.
Сравните начала и конец файлов - может увидите какую либо закономерность. Можете так же и $file->Файл попробовать в файл скинуть посмотреть

Не по теме:


Имена свойств объектов на русском...... жуть...

0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
04.12.2018, 16:48  [ТС] 7
Действительно был косяк с путями, но это не главное! я убрал base64_decode и заработало как надо, теперь вот беда, один файл сохраняется норм, а если передают несколько файлов, то сохраняется только один... и как бы еще их сразу соединять в один pdf файл... Спасибо
0
voral
917 / 614 / 135
Регистрация: 16.03.2008
Сообщений: 2,920
04.12.2018, 16:53 8
Может за секунду успевает все сделать....
Или попробуйте var_dump($data->return); - может там есть какая особенность, которую вы не учитываете....
0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
04.12.2018, 17:34  [ТС] 9
var_dump($result->return->Вложение) возвращает array(2) { [0]=> object(stdClass)#106 (1) { ["Файл"]=> string(863759)

короче я делаю форич и внутри него file_put_contents, только первый файл, хотя может и последний)...
0
voral
917 / 614 / 135
Регистрация: 16.03.2008
Сообщений: 2,920
04.12.2018, 17:38 10
Добавьте $key в имя файла
0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
10.12.2018, 13:39  [ТС] 11
Добрый день, в общем разобрался с получением файлов, теперь такая проблема:

приходит файл и это накладные которые нужно распечатать, так вот какие есть способы, чтоб этот pdf файл открывался сразу же, на пример в модальном окне, либо перенаправление было на другую страницу, header(Location) закрывает текущую страницу, а window.open браузер блокирует, в общем не совсем работает как надо... Спасибо
0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
11.12.2018, 14:15  [ТС] 12
Всем спасибо! все сделал! воспользовался jquery-ui ! Тема закрыта!
0
ruslay
0 / 0 / 0
Регистрация: 27.04.2017
Сообщений: 36
22.01.2019, 15:35  [ТС] 13
Добрый день, опять какая то непонятка... получаю файл и в консоли такое сообщение [Deprecation] Resource requests whose URLs contained both removed whitespace (`\n`, `\r`, `\t`) characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources. See https://www.chromestatus.com/feature/5735596811091968 for more details.

Самое интересное, что на локальном все работает, а на реальном сервере нет...

Добавлено через 1 час 42 минуты
По ходу, это из - за ajax и кириллических имен файлов... как их правильно обработать?

Добавлено через 48 минут
В общем сделал я транслитерацию, и на локальном все отлично работает... Я получаю этот файл из 1С локальный работает, а на реальном сайте нет... Это может быть на уровне сервера блокировка?

Добавлено через 3 часа 10 минут
В общем поборол я выше написанное, теперь вот такая проблема, так как это битрикс, несколько сайтов стоит и есть две корневые папки www и ext_www. Сначала я писал путь /home/bitrix/www/папка для файла и файл сохраняется, но на сайте по этому пути файла нет, как я понял я нахожусь по пути /home/bitrix/ext_www/папка для файла но в нее почему то не хотят сохраняться файлы... как правильно прописать путь?!!!
0
voral
917 / 614 / 135
Регистрация: 16.03.2008
Сообщений: 2,920
23.01.2019, 00:41 14
При сохраненнии файла использовать путь
PHP
1
$fileDir = $_SERVER['DOCUMENT_ROOT'].'/path/on/site/';
Вообще, по феншую, загружаемые файлы стоит складывать в каталог $_SERVER['DOCUMENT_ROOT'].'/upload/'
0
23.01.2019, 00:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2019, 00:41

Через SOAP запрос получить информацию с сервиса ФИАС
Всем привет! Столкнулся с проблемой получения результата с сервиса ФИАС посредством SOAP. До этого...

Как правильно подключать файлы через include?
Есть основная папка с проектом. В ней находится ещё несколько папок. В index.php который...

Как правильно сохранять файлы Аccess через SaveFileDialog()?
Stream myStream; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru