2016-12-05 8 views
0

Я использую загрузку файла jquery в приложении cakephp3. Теперь у меня проблема с обработкой этих изображений.Cakephp 3 загрузка файла jquery

Это мой код для загрузки

$this->viewBuilder()->layout(false); 

// if($this->request->is('post')){ 

    require_once(ROOT .DS. 'vendor' . DS . 'jqUploader' . DS . 'UploadHandler.php'); 

    $options = array(
     'upload_dir' => WWW_ROOT . 'upload/',   
     'accept_file_types' => '/\.(gif|jpe?g|png)$/i'  
     ); 

    $upload_handler = new \UploadHandler($options); 

    $d = $this->request->data; 



// } 


$this->render('/Elements/json'); 

Additionaly У меня есть компонент, где масштаб изображения. Я использую его раньше, когда мое приложение использует стандартную форму загрузки.

public function resizeImage($imagePath){ 

     $imagick = new \Imagick($imagePath); 
....... 
........ 
........ 
} 

Окей, теперь Как загрузить изображение с помощью JQuery файл загрузчика (UploadHandler.php) и масштабировать его с моей функции? Выход журнала


консоль:

SyntaxError: Unexpected token { in JSON at position 12 
    at parse (<anonymous>) 
    at Nb (https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js:4:10360) 
    at A (https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js:4:13887) 
    at XMLHttpRequest.<anonymous> (https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js:4:16491) 

JS

$(function() { 
    'use strict'; 

    var url = $("#gallery-up").attr('action'); 
    var cache; 

    var galery_up = $('#gallery-up').fileupload({ 
     url: url, 
     dataType: 'json', 
     autoUpload: false, 
     acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 
     maxFileSize: 999000, 
     disableImageResize: /Android(?!.*Chrome)|Opera/ 
     .test(window.navigator.userAgent), 
     previewMaxWidth: 100, 
     previewMaxHeight: 100, 
     previewCrop: true 
    }).on('fileuploadadd', function (e, data) { 
     console.log(url); 
     var p = $("#image-files").find("tbody"); 
     data.context = $('<tr />').appendTo(p); 

     $.each(data.files, function (index, file) { 



      if(file.name){ 

      var addToTable = '\ 
       <td class="preview" ></td>\ 
       <td>'+file.name+'</td>\ 
       <td>\ 
        <button type="button" class="btn btn-danger delete">\ 
        <i class="glyphicon glyphicon-trash"></i>\ 
        <span>Usuń</span>\ 
        </button>\ 
       </td>'; 


      data.context.append(addToTable); 
      }else{ 
       data.context.remove(); 
      } 
     }); 


      $('#btn-start-gallery').click(function(){ 
       data.submit(); 
      }) 


    }).on('fileuploadprocessalways', function (e, data) { 
     console.log('fileuploadprocessalways'); 
     var index = data.index, 
     file = data.files[index], 
     node = $(data.context.children()[index]); 
     if (file.preview) { 
      node.closest('tr').find('.preview').append(file.preview); 
     } 
     if (file.error) { 
      // node 
      // .append('<br>') 
      // .append($('<span class="text-danger"/>').text(file.error)); 
      node.closest('tr').remove(); 
     } 
     if (index + 1 === data.files.length) { 
      // data.context.find('button') 
      // .text('Upload') 
      // .prop('disabled', !!data.files.error); 
     } 
    }).on('fileuploadprogressall', function (e, data) { 
     console.log('fileuploadprogressall'); 
     console.log(data); 
     var progress = parseInt(data.loaded/data.total * 100, 10); 
     $('#progress .progress-bar').css(
      'width', 
      progress + '%' 
      ); 
    }).on('fileuploaddone', function (e, data) { 
     console.log('po uploaddzie'); 
     $.each(data.result.files, function (index, file) { 
      if (file.url) { 
       var link = $('<a>') 
       .attr('target', '_blank') 
       .prop('href', file.url); 
       $(data.context.children()[index]) 
       .wrap(link); 
      } else if (file.error) { 
       var error = $('<span class="text-danger"/>').text(file.error); 
       $(data.context.children()[index]) 
       .append('<br>') 
       .append(error); 
      } 
     }); 
    }).on('fileuploadfail', function (e, data) { 
     console.log('fileuploadfail'); 
     console.log(data); 
     $.each(data.files, function (index) { 
      var error = $('<span class="text-danger"/>').text('File upload failed.'); 
      $(data.context.children()[index]) 
      .append('<br>') 
      .append(error); 
     }); 
    }).on('fileuploaddone', function (e, data) { 
     console.log('fileuploaddone'); 
     cache = data; 
    }).prop('disabled', !$.support.fileInput) 
    .parent().addClass($.support.fileInput ? undefined : 'disabled'); 



}); 
+0

где ваш javascript ajax – Beginner

+0

Я eddit вопросы, вы можете посмотреть сейчас? :) – bradley546994

+0

как насчет представления '/ Elements/json', где вы возвращаете свои json-данные – Beginner

ответ

0

Ok я нашел anwser, но, возможно, другие люди имеют те же проблемы. Я меняю имя на вход из файлов в галерею и загружаю не найденные файлы. Если у вас есть такая же проблема, вы можете использовать

'param_name' => 'gallery' 

в ваших php-файлах.

Смежные вопросы