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

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


cloudterminal:csv

Имитация файлового обмена

Облачный ТСД обменивается данными исключительно через веб-сервис, файловый или какой-либо другой оффлайн обмен добавлять не планируется.

Однако, имитация файлового обмена есть в веб-сервисе. Вы можете её использовать, если Ваша товароучетная система не поддерживает обмен данными со сторонними веб-сервисами через REST API.

Подготовьте базу штрих-кодов в формате csv файла (первая строка заголовок обязательна):

barcode,name,advanced_name,unit
4893729011893,Скрепы,,шт.
2000000000015,Велосипед,,
2900000005686,Блокнот,Желтый,литр
4960371004716,Деталь,,шт.
640522710850,Дрель,,пачка
725211167020,Утюг,синий,литр

И отправьте его методом POST в веб сервис по адресу /new/csv, В заголовке access-key POST запроса следует указать ключ доступа к веб-сервису.

Для отправки можно воспользоваться утилитой cURL или написать простой скрип на любом языке программирования, поддерживающим такие операции.

Вот пример отправки csv файла в наш облачный сервис через PHP скрипт.

Разместите этот код в файле service.php

<?php
 
$url = 'http://datacollector.lineris.ru:8080/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 Вы не отправили файл');
}
?>

Пример 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>
Как видите, это не совсем файловый обмен, и отправителю и мобильному устройству нужно иметь доступ к веб-сервису обмена, передача данных производится по HTTP протоколу

В ответ веб-сервис вернет PNG изображение QR кода, который следует сканировать приложением Облачный ТСД.

Для имитации отправки собранных в виде файла в настройках мобильного приложения Облачный ТСД в разделе Веб-служба передачи данных следует включить опцию Самостоятельная отправка и настроить URL веб-службы и Ключ доступа.

По-умолчанию эти параметры настроены на наш облачный веб-сервис с демонстрационным ключом доступа

После этих настроек в меню приложения появится пункт Отправить данные через веб-сервис. Приложение выгрузит собранные данные в настроенный веб-сервис обмена, а ссылку для их получения в формате csv отправит через выбранный Вами сервис (e-mail, мессенджеры и т.п.).

По ссылке открывается текстовый документ в формате csv:

barcode,quantity
2003637860748,1
2200000000163,2
2200000000170,1
2200000000361,1
2200000000453,1
2200000000682,1
7930042580136,1
cloudterminal/csv.txt · Последнее изменение: 2020/11/03 13:34 — kuld