Инструменты пользователя

Инструменты сайта


cloudterminal:csv

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
cloudterminal:csv [2018/12/28 11:13] kuldcloudterminal:csv [2023/11/21 08:44] (текущий) kuld
Строка 8: Строка 8:
 <code csv> <code csv>
 barcode,name,advanced_name,unit barcode,name,advanced_name,unit
-4893729011893,Скрепы,,шт. +"4893729011893","Скрепы,","шт." 
-2000000000015,Велосипед,, +"2000000000015","Велосипед",, 
-2900000005686,Блокнот,Желтый,литр +"2900000005686","Блокнот","Желтый","литр" 
-4960371004716,Деталь,,шт. +"4960371004716","Деталь",,"шт." 
-640522710850,Дрель,,пачка +"640522710850","Дрель,","пачка" 
-725211167020,Утюг,синий,литр+"725211167020","Утюг","синий","литр"
 </code> </code>
  
Строка 21: Строка 21:
  
 [[https://lineris.ru/cloudterminal/|Вот пример]] отправки csv файла в наш облачный сервис через PHP скрипт. [[https://lineris.ru/cloudterminal/|Вот пример]] отправки csv файла в наш облачный сервис через PHP скрипт.
 +
 +
 +Исходный код примера. Разместите разместите его в файле ''service.php'' у себя на хостинге
 +<code php>
 +<?php
 +
 +$url = 'https://datacollector.lineris.ru/masterdata/csv/'; // URL веб-сервиса
 +$key = '5422eb21-e0f8-4b4e-f481-6a8719cae7f1'; // Ключ доступа
 +
 +$maxsize = '100000'; //Ограничение размера csv файла в байтах
 +
 +
 +if (isset($_FILES['file']['tmp_name']) && !empty($_FILES['file']['tmp_name']))
 +{
 +    
 +    if ($_FILES['file']['size'] <= $maxsize)
 +    {
 +       $upload = file_get_contents($_FILES['file']['tmp_name']);  
 +       
 +       $headers = array();
 +       
 +       $headers[] = 'Content-type: text/csv';
 +       $headers[] = 'access-key: '.$key;
 +       
 +       $ch = curl_init();  
 +       curl_setopt($ch, CURLOPT_URL, $url);  
 +       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
 +       curl_setopt($ch, CURLOPT_POST, 1);  
 +       curl_setopt($ch, CURLOPT_POSTFIELDS, $upload);  
 +       curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
 +       curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);  
 +       $output = curl_exec($ch);   
 +       $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 +    
 +       if ($output)
 +       {
 +           
 +        if ($http_code == 200)
 +        {
 +          echo(base64_encode($output));
 +        } else {
 +          echo('error '.$output);
 +        }
 +        
 +       } else {
 +           //сервис не ответил
 +           echo('error Сервис временно не доступен!');
 +       }
 +
 +    } else {
 +        //файл слишком большой
 +        echo('error Файл слишком большой');
 +    }
 +    
 +} else {
 +    //нет файла
 +    echo('error Вы не отправили файл');
 +}
 +?>
 +</code>
 +
 +Исходный код примера HTML страницы с формой выбора файла и кнопкой "Отправить". Встройте его в нужные страницы вашего сайта.
 +
 +<code html>
 +<!DOCTYPE html>
 +<html>
 +<head>
 +  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 +  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
 +   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css"> 
 +  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
 +</head>
 +<body>
 + <section id="form" style="margin-top:50px;">
 +  <div class="container">
 +   <div class="row">
 +    <div class="col-md-3"></div>
 +    <div class="col-md-6">
 +    <form class="form-horizontal" id="ajaxForm">
 +      <div class="form-group">
 +        <label for="inputEmail" class="col-xs-3 control-label">Файл CSV:</label>
 +        <div class="col-xs-9">
 +          <input type="file" id="formFile" name="file" accept=".csv">
 +        </div>
 +      </div>        
 +      <div class="form-group" style="display:none;" id="msgdiv">
 +        <div class="col-xs-4">Текстовое сообщение:</div>
 +        <div class="col-xs-8" id="msg">
 +          
 +        </div>
 +      </div>
 +      <div class="form-group" style="display:none;" id="qrdiv">
 +        <label for="inputPassword" class="col-xs-3 control-label">QR-код:</label>
 +        <div class="col-xs-9">
 +          <div id="qrcode"></div>
 +        </div>
 +      </div>
 +
 +      <div class="form-group">
 +        <div class="col-xs-offset-2 col-xs-10">
 +          <button type="submit" class="btn btn-default">Отправить</button>
 +        </div>
 +      </div>
 +    </form>
 +    </div>
 +    <div class="col-md-3"></div>
 +   </div>
 +  </div>
 + </section>
 + <script>
 +$(document).ready(function() {
 +
 +        $('#ajaxForm').submit(function(e) {
 +            
 +           e.preventDefault();
 +           var $that = $(this),
 +           formData = new FormData($that.get(0));
 + 
 +           $.ajax({
 +            url: 'service.php',
 +            type: 'POST',
 +            contentType: false,
 +            processData: false,
 +            data: formData,
 +            dataType: 'json',
 +            xhr: function(){
 +             var xhr = $.ajaxSettings.xhr();
 +             xhr.onload = xhr.onerror = function() 
 +             {
 +              if (this.status == 200) {
 +       
 +               if (this.response.match('error'))
 +               {
 +                $('#qrdiv').css('display','none');
 +                $('#msgdiv').css('display','block');
 +                $('#msg').html(this.response.substr(6));           
 +               } else {
 +                $('#qrdiv').css('display','block');
 +                $('#msgdiv').css('display','none');
 +                $('#qrcode').html('<img src="data:image/jpeg;base64, '+this.response+'">');
 +               }
 +             }
 +            };
 +            
 +            
 +             return xhr;
 +            }
 +           });      
 +           
 +        });
 +
 +});
 + </script>
 +</body>
 +</html>
 +
 +</code>
  
 <note>Как видите, это не совсем файловый обмен, и отправителю и мобильному устройству нужно иметь доступ к веб-сервису обмена, передача данных производится по HTTP протоколу</note> <note>Как видите, это не совсем файловый обмен, и отправителю и мобильному устройству нужно иметь доступ к веб-сервису обмена, передача данных производится по HTTP протоколу</note>
Строка 28: Строка 185:
 Для имитации отправки собранных в виде файла в настройках мобильного приложения **Облачный ТСД** в разделе //Веб-служба передачи данных// следует включить опцию //Самостоятельная отправка// и настроить //URL веб-службы// и //Ключ доступа//. Для имитации отправки собранных в виде файла в настройках мобильного приложения **Облачный ТСД** в разделе //Веб-служба передачи данных// следует включить опцию //Самостоятельная отправка// и настроить //URL веб-службы// и //Ключ доступа//.
  
-<note tip>По-умолчанию эти параметры настроены на нашу облачный веб-сервис с демонстрационным ключом доступа</note>+<note tip>По-умолчанию эти параметры настроены на наш облачный веб-сервис с демонстрационным ключом доступа</note>
  
 После этих настроек в меню приложения появится пункт //Отправить данные через веб-сервис//. Приложение выгрузит собранные данные в настроенный веб-сервис обмена, а ссылку для их получения в формате csv отправит через выбранный Вами сервис (e-mail, мессенджеры и т.п.). После этих настроек в меню приложения появится пункт //Отправить данные через веб-сервис//. Приложение выгрузит собранные данные в настроенный веб-сервис обмена, а ссылку для их получения в формате csv отправит через выбранный Вами сервис (e-mail, мессенджеры и т.п.).
 +
 +<note>
 +В бесплатной версии приложения Облачный ТСД установлен месячный лимит в 30 отправок собранных данных через наш сервис обмена.
 +</note>
  
 По ссылке открывается текстовый документ в формате csv: По ссылке открывается текстовый документ в формате csv:
Строка 45: Строка 206:
 </code> </code>
  
 +А ещё вы можете получить собранные данные POST запросом непосредственно на ваш сайт или в облачное приложение в формате JSON. Сделайте обработчик POST запросов на вашем сайте или в облачном приложении, URL этого обработчика должен заканчиваться на ''/upload''. Закодируйте URL в QR-код и отобразите его. Если сканировать приложением этот QR код, оно отправит собранные данные POST запросом в формате JSON по указанному URL. Получите данные и вертине HTTP статус 200 в ответ на этот запрос.
 +
 +<note tip>Такая отправка работает без месячного лимита даже в бесплатной версии.</note>
cloudterminal/csv.1545995615.txt.gz · Последнее изменение: 2018/12/28 11:13 — kuld

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki