CI 묻고 답하기

제목 CI 연계해서 bootstrap 중에 ace templete 파일업로드 질문이 있습니다....
글쓴이 사짜 작성시각 2015/05/07 17:38:20
댓글 : 0 추천 : 0 스크랩 : 0 조회수 : 14713   RSS
현상은 이미지 파일들만 올라가고 zip 파일이나 docx 기타 파일들은 $_FILES 에 받아지질 않네요...



 var $form = $(document);
 //you can have multiple files, or a file input with "multiple" attribute
 var file_input = $form.find('input[type=file]');
 var upload_in_progress = false;
 
 e.preventDefault();

 var files = $(this).data('ace_input_files');
 if( !files || files.length == 0 ) return false;//no files selected
      
 var deferred ;
 if( "FormData" in window ) {
   var field_name = $(this).attr('name');
   //for fields with "multiple" file support, field name should be something like `myfile[]`

   var files = $(this).data('ace_input_files');
   if(files && files.length > 0) {
    for(var f = 0; f < files.length; f++) {
     //formData_object.append(field_name, files[f]);
     formData_object.append("file[]", files[f]);
     console.log(formData_object);
     console.log(files[f]);
    }
   }
  //});


  upload_in_progress = true;
  file_input.ace_file_input('loading', true);
  
  deferred = $.ajax({
   url: "/base/uploader/upload",
   type: "post",
   processData: false,//important
   contentType: false,//important
   dataType: 'json',
   data: formData_object
   /**
   ,
   xhr: function() {
    var req = $.ajaxSettings.xhr();
    if (req && req.upload) {
     req.upload.addEventListener('progress', function(e) {
      if(e.lengthComputable) { 
       var done = e.loaded || e.position, total = e.total || e.totalSize;
       var percent = parseInt((done/total)*100) + '%';
       //percentage of uploaded file
      }
     }, false);
    }
    return req;
   },
   beforeSend : function() {
   },
   success : function() {
   }*/
  })

 }

JS 디버깅할때에는 files 에 분명히 파일이 쌓였고
formdata 변수에 쌓이면 내용이 안보이더라구요.
그 내용까지는 확인을 못해봤지만
 이미지 파일일 경우에도 마찬가지라서 넘어갔습니다.
 문제는 컨트롤러 부분인데...

/base/uploader/upload
컨트롤러 소스에서는



 public function upload () {
  
  //our operation result including `status` and `message` which will be sent to browser 
  $result = array();
  $file = $_FILES['file']; <-------- 이 부분입니다. 이미지일 경우 다 받아지는데 기타 파일들은 안받아지네요...

   
  if( is_string($file['name']) ) {
   //single file upload, file['name'], $file['type'] will be a string
   $result[] = validateAndSave($file);
  }
  else if( is_array($file['name']) ) {
   //multiple files uploaded
   $file_count = count($file['name']);
  
      //in PHP if you upload multiple files with `avatar[]` name, $file['name'], $file['type'], etc will be an array
   for($i = 0; $i < $file_count; $i++) {
    $file_info = array(
        'name' => $file['name'][$i],
        'type' => $file['type'][$i],
        'size' => $file['size'][$i],
     'tmp_name' => $file['tmp_name'][$i],
     'error' => $file['error'][$i]
    );
    $result[] = $this->validateAndSave($file_info);
   }
  }
  
  $upload_result = "";
  for ($i=0; $i < count($result); $i++) { 
   
   //print_r($result[$i]);
   $fileMap = array(
    "web_path" => $result[$i][webpath],
    "filename" => $result[$i][filename],
    "realfilename" => $result[$i][realfilename],
    "fileext" => $result[$i][extention],
   );
   
   $upload_result[$i][idx] = $this->fm->setFile($fileMap);
   $upload_result[$i][status] = "OK";
  }
  
  $result = json_encode($upload_result);
  print_r($result);

 }
. 도무지 이유를 모르겠네요...
 js 폼데이터에서 넘길때 이미 상실이 된 상태인지,
 아니면 PHP 부분에서 받는 부분이 문제인지도 감을 못잡겠네요...




 
 다음글 cookie의 물리적 size가 커서 header si... (2)
 이전글 DB관련 연결 에러 문제입니다 ㅠ (3)

댓글

없음