Codeigniter: загрузка файла работает на локальном хосте, но не на сервере (неожиданный конец ввода JSON) - PullRequest
0 голосов
/ 05 апреля 2019

Попытка загрузить изображение в каталог / assets / images /, и оно работает на локальном хосте, но при отправке на сервер тот же код не работает, и консоль говорит: Uncaught SyntaxError: Неожиданный конец ввода JSON

Я обновил файл .htaccess, чтобы показать следующее:


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|upload|robots\.txt|.*\.css)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

но это не помогло

При отправке:

$('#submit').submit(function(e){
      var newoi = $( "tr:last" ).data('order_index') + 1;
      $('input[name="order_index"]').attr('value',newoi);
      e.preventDefault();
      $.ajax({
        url:'<?php echo base_url('billboard/do_upload');?>',
        type:"post",
        data: new FormData(this),
        processData:false,
        contentType:false,
        cache:false,
        async:false,
        success: function(data){
          alert(data);
          console.log(data);
          var data = JSON.parse(data);
          $('#gallery').append('<tr class="photos" id="' + data.id +'" data-order_index="' + data.order_index + '"><td><button class="up"> ^ </button><button class="down"> v </button></td><td><img src="/assets/images/' + data.url + '"></td><td><button class="delete">delete</button></td></tr>');
          bindDeactivate();
        },
        error: function(jqxhr, status, exception) {
          alert('Exception:', exception);
        }
      });
    });

и консоль на локальных выходах:

{"success":true,"id":32,"location_id":"2","url":"eb3bc54c5c8d1261d3ef0cf75a32b17f.png","order_index":"1"}

но на моем сервере выводит:

Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at Object.success (index:155)
    at i (jquery-3.2.1.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
    at A (jquery-3.2.1.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
    at XMLHttpRequest.send (<anonymous>:1:781)
    at Object.send (jquery-3.2.1.min.js:4)
    at Function.ajax (jquery-3.2.1.min.js:4)
    at HTMLFormElement.<anonymous> (index:144)

php-код, по которому он попадает:


  function do_upload(){
    $config['upload_path']="./assets/images";
    $config['allowed_types']='gif|jpg|png';
    $config['encrypt_name'] = TRUE;

    $this->load->library('upload',$config);

    if($this->upload->do_upload("file")){
      $data = array('upload_data' => $this->upload->data());

      $location_id= $this->input->post('location_id');
      $url = $data['upload_data']['file_name'];
      $order_index = $this->input->post('order_index');


      $data = array(
        'location_id' => $location_id,
        'url' => $url,
        'order_index' => $order_index
      );


      $result['success'] = $this->db->insert('billboard_photos', $data);
      $result['id'] = $this->db->insert_id();
      $result['location_id'] = $location_id;
      $result['url'] = $url;
      $result['order_index'] = $order_index;

      echo json_encode($result);
    }

Я не уверен, что является причиной проблемы, но я читал, что это может быть связано с файлом htaccess. Я удалил index.php из URL, но он подается по адресу https: //, поэтому я не знаю, является ли это частью проблемы.

Заранее спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...