1c отправка JSON PDF на сервер PHP

Рейтинг: 0Ответов: 0Опубликовано: 12.07.2023

Всем привет. Передаю Base64 из 1с в php

    СтруктураРепорт = Новый Структура;
    ДД =  Base64Строка(Новый ДвоичныеДанные(Выборка.ПК));
    СтруктураРепорт.Вставить("ПаспортКачестваПуть", СтрЗаменить(СтрЗаменить(ДД,Символы.ПС,""),Символы.ВК,""));
        Путь = СтрЗаменить(СтрЗаменить(ДД,Символы.ПС,""),Символы.ВК,"");    
     Пк = Новый ДвоичныеДанные(Выборка.ПК);     
        МассивДислок.Добавить(СтруктураРепорт);

//JSON++        
ПараметрыJSON    = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " " , Истина, ЭкранированиеСимволовJSON.нет, Ложь, Ложь, Ложь, Ложь);
ЗаписьJSON       = Новый ЗаписьJSON;
ЗаписьJSON.ПроверятьСтруктуру = Истина;
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); 

ЗаписатьJSON(ЗаписьJSON, МассивДислок);
ЗапросJSON = ЗаписьJSON.Закрыть();
//JSON--

На стороне PHP:

    <?php if (!isset($SITEROOT)) exit;

$title = "Паспорт качества";    

if ($_POST['sbm']>0 && $_POST['nakladnaya']) {
    
    $nakladnaya = $db->real_escape_string($_POST['nakladnaya']);
    $json = file_get_contents("http://$http_host/json.php?z=pasport&nakladnaya=".$nakladnaya);
    

    //var_dump($json); exit;

    
    $data = new DateTime('', $timezone); $data_add_log = $data->format('Y-m-d H:i:s');
    $db->query("INSERT INTO users_nnk_log (user_id, razdel, opis, date) VALUES ('{$com_id}','pasport','Запрос Паспорта Качества. Ж/Д накладная: {$nakladnaya}','{$data_add_log}') ");

    if($json) {
    $array = json_decode($json, true);

        foreach($array as $arEl) {
        $fileName = end(explode('\\\\', $arEl['ПаспортКачестваПуть']));
        $content = file_get_contents('/var/www/html/pdf/'.$fileName);
        $array.
        header('Content-Type: application/pdf');
        header('Content-Disposition: attachment;filename="'.$fileName.'"');
        //header('Contet-Trasfer-Encoding: binary');
        header('Cache-Control: max-age=0');
        // If you're serving to IE 9, then the following may be needed
        header('Cache-Control: max-age=1');

            // If you're serving to IE over SSL, then the following may be needed
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header('Pragma: public'); // HTTP/1.0
        //echo "1231231";   
            echo $content;
            exit;

        }
    }
}

include $_SERVER['DOCUMENT_ROOT']."/strukt/top.php";
?>
<div class="passport-page"> 
    <h1><?=$title?></h1>    
    <p>Для получения паспорта качества для <?=$com_name?>, заполните одно из полей ниже и нажмите кнопку "Получить"</p>
    <form method='POST' action='/pasport/' name='month_form'>
        <div class="flex">
            <input name="nakladnaya" type="text" placeholder="Номер железнодорожной накладной">
        </div>
        <input name="sbm" value="1" hidden="hidden">
        <button><i>Получить паспорт</i><span></span></button>
    </form>
    <br>
    <?if($link):?>
        <?=$link?>
echo $link
    <?endif;?>
</div>
<?php
error_reporting(0);

require $_SERVER['DOCUMENT_ROOT'] . '/config.php';

if(isset($_GET['z']) && !empty($_GET['z'])) {
    $auth = base64_encode($jsonLogin.":".$jsonPass);
        $context = stream_context_create([
            "http" => [
               "header" => "Authorization: Basic $auth",
            "timeout" => 40,
            ]
        ]);


    switch ($_GET['z']) {
        case 'day':
            $dtQuery = new DateTime($_GET['date']);
            if($develop) {
                $ourData = file_get_contents($dayRemoteFileName);
            } else {    
                $ourData = file_get_contents($dayRemoteFileName.(int)$_GET['cl_kod'].'/'.$dtQuery->format('Ymd'), false, $context); 
fp($ourData);
            }
            echo $ourData;
            exit;
            break;
        case 'month':
            if($develop) {
                $ourData = file_get_contents($monthRemoteFileName);
            } else {
                $ourData = file_get_contents($monthRemoteFileName.(int)$_GET['cl_kod'].'/'.$_GET['date'].'01', false, $context);
            }
            echo $ourData;
            exit;
            break;
        case 'pasport':
            if($develop) {
                $ourData = file_get_contents($pasportRemoteFileName);
            } else {        
              $ourData = file_get_contents($pasportRemoteFileName.urlencode($_GET['nakladnaya']), false, $context);
            }
            echo $ourData;
            break;
    }
}

Если передаю просто строку то читает нормально, а если Base64 то var_dump($json); показывает string(0)

Сам Json выглядит так

Ответы

Ответов пока нет.