CI 묻고 답하기

제목 upload download
글쓴이 피자한판두판 작성시각 2012/07/13 13:47:36
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 20000   RSS
public function file_down()
 {
  $this->load->helper('download');
  $this->load->model('files_model');
  
  $filename = $this->uri->segment(3,0);
  $fname = $this->files_model->download_files($filename);
  
  force_download($fname, $filename);
  //print_r($fname);
  //echo $filename;
  
 }
윗 부분은 Controller
 public function download_files($filename)
 { 
      
   return $fname = $this->db->select()
      ->from('files')
      ->where('title = "'.$filename.'" ')
      ->get()
      ->result();
//   print_r($fname);
 }
윗 부분은 Model

<?php
if (isset($files) && count($files))
{
 ?>
  <ul>
   <?php
   foreach ($files as $file)
   {
    ?>
    <li class="image_wrap">
     <a href="#" class="delete_file_link" data-file_id="<?php echo $file->id?>">Delete</a>
     <strong><?php echo $file->title?></strong>
     <br />
     <a href="/upload/file_down/<?=$file->title?>"><?php echo $file->filename?></a>
    </li>
    <?php
   }
   ?>
  </ul>
 </form>
 <?php
}
view부분입니다.

해외 사이트 참고하여 upload부분까지는 됐는데요
테이블에 id값이 있지만 일단 데이터 하나만 넣어서 이름으로 다운로드가 되는지 테스트해보고있었는데요
download는 제가 생각한대로 추가한겁니다.

db에서 가져올때 저렇게 가져올려고하니
Message: Array to string conversion
Filename: helpers/download_helper.php에러가 나더라구여

그래서 $fname을 implode해서 title만뽑으려고 echo를했는데
Object of class stdClass could not be converted to string에러가 뜨던데 오브젝트클래스는 무슨 스트링형으로 변환할수없다?이건거같은데 어떻게 해결해야하나여??
public function download_files($filename)
 { 
      
   return $fname = $this->db->select()
      ->from('files')
      ->where('title = "'.$filename.'" ')
      ->get()
      ->result();
//   print_r($fname);
 }

 다음글 session, 툴 (1)
 이전글 Load Library 의 메모리 문제 (6)

댓글

변종원(웅파) / 2012/07/13 14:08:09 / 추천 0
 에러 메세지에 답이 있네요. 모델에서 배열로 반환이 됐는데 그걸 그대로 넣으니 에러 나는겁니다.

모델에서 반환된 $fname을 print_r로 찍어보세요
피자한판두판 / 2012/07/13 14:11:00 / 추천 0
웅파 //
답변 감사합니다
배열로 찍으니 나오는 건 알았는데 저걸 배열이 아닌 String으로 넣어야 되잖아요 ?
그래서 implode했는데 저런 에러가 나와서 아직 해결을 못하고 있네요
implode가 아닌 다른걸 써야하나여?
implode해서 echo찍어봐도 저 에러가 나오더라구요 print_r은 배열이 아니니 값이 뜨질않구요
한대승(불의회상) / 2012/07/13 14:32:40 / 추천 0
 Object 를  Array로 바꿔 보세요.
public function download_files($filename)
 { 
      
   return $fname = $this->db->select()
      ->from('files')
      ->where('title = "'.$filename.'" ')
      ->get()
      ->result_array();
//   print_r($fname);
 }
피자한판두판 / 2012/07/13 14:39:24 / 추천 0
불의회상//
답변 감사합니다

2주조금 넘은 회사 신입인데.. 개인 공부하면서  아무것도 모르고 묻기가 좀 그랬었는데 사수가 도와줬습니다

$fname을 한 값을 $fname[0]->컬럼값으로 지정하니 데이터를 불러올수있더군요

그런데.. force_download에 값만 넣어주면 될줄알았는데 여전히 안되네요 ;;;
///아.. 아니다 echo찍어서 실행 우선순위? 가 뒤바껴서 에러난거였습니다 해결됐습니다.
웅파, 불의회상님 답변 감사드립니다.


꾸숑 / 2013/05/11 20:50:14 / 추천 0
덕분에 공짜로 넘어가네요...
매뉴얼이 조금 부실한 면이 있어서 고민 하던차에...
게시글 읽고 한방에 성공 했네요 ^^

감사합니다. 모두들...