Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Модуль image
http://forum.kohanaframework.su/viewtopic.php?f=20&t=242
Страница 2 из 2

Автор:  WinterSilence [ 12 сен 2013, 12:09 ]
Заголовок сообщения:  Re: Модуль image

с любым файлом?

Автор:  Steemy [ 12 сен 2013, 14:07 ]
Заголовок сообщения:  Re: Модуль image

Наверно я малость не правильно говорю, если передавать просто форомой через поле input file, то все работает нормально, а я пытаюсь сделать через ajax вот он и не хочет кушать файлы, не пониаю как и сделать.

Автор:  WinterSilence [ 12 сен 2013, 15:47 ]
Заголовок сообщения:  Re: Модуль image

Steemy js код в студию

Автор:  Steemy [ 12 сен 2013, 17:18 ]
Заголовок сообщения:  Re: Модуль image

Код:
$(document).ready(function() {
   jQuery.event.props.push('dataTransfer') ;
   var maxFiles    = 1,
      maxSize     = 2,
      errMessage  = 0,
      dataArray   = [],
      $errMessage = $('.errMessage'),
      $dropFiles  = $('.drop-files'),
      $loadCont   = $('.loading-content') ;
      
   //При падении файла в зону загрузки
   $dropFiles
      .on('drop', function(e) {
         var files = e.dataTransfer.files ;
         if (files.length <= maxFiles) {
            loadInChek(files) ;
         } else {
            errorMessage('Вы не можете загружать больше '+maxFiles+' изображений!') ;
            files.length = 0 ;
            return ;
         }
      })
   
   // Функция проверки изображений
   function loadInChek(files) {
      var Percent = 100 / files.length,
         Сounter = 0 ,
         arr_Img = [] ;
      $.each(files, function(index, file) {
         if (!files[index].type.match('image.*')) {
            errorMessage('Можно загружать только изображения') ;
            return false;
         } else if(files[index].size > 2*1024*1024) {
            errorMessage('Файл большого размера! Максимальный размер файла 2мб!') ;
            return false ;
         }
         
         $('.loading').show() ;
         
         var fileReader = new FileReader() ;
            fileReader.onload = (function(file) {
               return function(e) {
                  ++Сounter ;
                  [b]arr_Img.push({
                     name:file.name,
                     type:file.type,
                     tmp_name:this.result,
                     error:0,
                     size:file.size}) ;[/b]
                  send(file.name,arr_Img,Percent,Сounter) ;
               };
            })(files[index]) ;
         fileReader.readAsDataURL(file) ;
      }) ;
      
      return false;
   }
   
   function errorMessage(text) {
      $errMessage.fadeIn(800).html(text).delay(800).fadeOut(800) ;
   }
   
   // Функция отправки изображения на сервер
   function send(fileName,fileResult,Percent,counter) {
      $loadCont.html('Загружается '+fileName) ;
      $.post(url_site, { name: fileName, value: fileResult }, function(data) {
         $('.loading-color').css({'width' : Percent*(counter)+'%'}) ;
         if(Percent*(counter) == 100) {
            $loadCont.html('Загрузка завершена!').parent().delay(500).fadeOut(1000);
            $dropFiles.css({
               'box-shadow' : 'none'
            }) ;
            $('.content').prepend(data) ;
         } else if(Percent*(counter) < 100) {
            $loadCont.html('Загружается '+fileName) ;
         }
      }) ;
   }
}) ;   }
}) ;

массив передаю:
Код:
arr_Img.push({
                     name:file.name,
                     type:file.type,
                     tmp_name:this.result,
                     error:0,
                     size:file.size}) ;

Автор:  WinterSilence [ 13 сен 2013, 14:39 ]
Заголовок сообщения:  Re: Модуль image

используй что-нибудь вроде http://www.uploadify.com/ или https://github.com/codler/jQuery-Ajax-Upload , простого варианта ajax загрузки файлов я не видел пока. я пользуюсь https://github.com/Widen/fine-uploader

Автор:  Steemy [ 13 сен 2013, 15:03 ]
Заголовок сообщения:  Re: Модуль image

WinterSilence Спасибо, посмотрю, может подойдет.

Автор:  WinterSilence [ 13 сен 2013, 15:25 ]
Заголовок сообщения:  Re: Модуль image

обманул немного, в случае с 1 файлом работает вариант:

Код:
<form name="load_img_form" action="" method="post" enctype="multipart/form-data">
   <input type="file" name="avatar" id="avatar" value="">
   <input type="submit" name="load_img" id="load_img" value="Upload">
</form>


Код:
$(document).ready(function(){
   
   $.ajaxSetup({
      type: 'POST',
      dataType: 'json',
      async: true,
      error: function(error){
         console.log(error.message);
      }
   });
   
   $('#load_img').click(function(){
      
      var fd = new FormData();
      fd.append('avatar', $('#avatar')[0].files[0]);
      
      $.ajax({
         processData: false,
         contentType: false,
         url: 'ajax/avatar/upload',
         data: fd,
         success: function(result){
            console.log(result);
         }
      });
      return false;
   });
   
});

Автор:  Steemy [ 13 сен 2013, 16:51 ]
Заголовок сообщения:  Re: Модуль image

В кохане использщуется проверка is_uploaded_file и загрузка move_uploaded_file, если использовать метод save, вот в чем проблема, делаю через file_put_contents, стало все работать.

Автор:  WinterSilence [ 13 сен 2013, 17:17 ]
Заголовок сообщения:  Re: Модуль image

Steemy вас никто не принуждает использовать данный метод валидации

Автор:  Steemy [ 13 сен 2013, 17:57 ]
Заголовок сообщения:  Re: Модуль image

Я понял, я просто не мог сначала понять в чем и дело. Спасибо Вам большое, что уделили время.

Страница 2 из 2 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/