제목 | 파일업로드가 두개라면, | ||
---|---|---|---|
글쓴이 | 수야디벨 | 작성시각 | 2013/07/16 12:06:21 |
|
|||
안녕하세요. 궁금한게 있어서 질문드립니다. 만약에 파일 업로드가 한 페이지에 두개가 필요하다면, 어떤식으로 구현해야 할까요 ? 지금까지는 한 페이지에 파일 업로드 기능이 하나만 있으면 되었기에, 이런 문제에 부딪혀 보지 않았거든요 . 그런데 이번에 한 페이지에 파일업로드 기능이 두개 (하나는 이미지, 하나는 파일)가 따로따로 있어야 해서, 두개를 적용하다 보니 문제가 발생한겁니다 . 하나일때는 , 아래 소스를 view에다가 구성해 주고 , <?= form_open_multipart('upload/do_upload');?>
<input type="file" name="userfile" size="20" />
<input type="submit" value="upload" />
</form>
이를 controller에서 function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
이렇게 받으면 되잖아요? (매뉴얼처럼..) 그런데 여기서 , view에서 보내주는 파일 업로드의 name이 userfile 일때만 받아지는거 같더라구요. 컨트롤러의 받는 부분에선 userfile이라는name을 사용하진 않는거 같은데 .. 착각인가 ... 아무튼, view에서 파일 업로드가 두개면, 어떻게 해야 하는건가요?? ps. <?= form_open_multipart('upload/do_upload');?> 이거로 같이 묶어 주기에는 코딩상 서로 멀리 떨어져 있습니다. |
|||
다음글 | application -> modules 폴더에 ... (2) | ||
이전글 | 에러처리 관련질문드립니다. (14) | ||
변종원(웅파)
/
2013/07/16 12:35:34 /
추천
0
|
수야디벨
/
2013/07/16 13:27:31 /
추천
0
웅파//
제가 착가한 부분이 있는데 , 같은 <?= form_open_multipart('upload/do_upload');?> 으로 묶여있네요ㅠ 그래서 submit을 누르면 한번에 모든 input 데이터가 upload컨트롤러 넘어가는데 . 웅파님 말씀대로 매뉴얼을 보니 $field_name = "userfile2"
$this->upload->do_upload($field_name); 이렇게 하면 된다고 나와 있는데요 , 이걸 controller에다가 적용해봤습니다. function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
$field_name = "userfile2";
$this->upload->do_upload($field_name);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
이렇게 하였을 경우에 userfile2를 받을 수 있다는게 아닐까요? 이렇게 하였을 경우 보통, 파일은 선택하지 않았다는 메세지는 하나만 나오는데, 이렇게 했을 경우에는 두개가 나오더라구요 You did not select a file to upload. You did not select a file to upload. 이런식으로 .. 이런 오류메세지 보면, usefile은 베이스로 깔려 있는 거고, 새롭게 필드명을 넘겨 줌으로써 컨트롤러가 두개의 upload를 받을려고 하는건가? 하고 유추해 볼 수 있는데, 파일을 선택했음에도 저렇게 뜬다는건 .. 아니면 $field_name1 = "userfile1";
$this->upload->do_upload($field_name1);
$field_name2 = "userfile2";
$this->upload->do_upload($field_name2);
이렇게 해야하나요? 그런데 컨트롤러의 함수이름을 다른걸로 대체했습니다. 매뉴얼에서는 do_upload 지만 저는 file_upload로 변경했거든요 .. 그런데도 함수이름은 do_upload라고 쓰는게 맞는거지요? (컨트롤 아래에 봐보면 if문에 ! $this->upload->do_upload() 되어있는데, 이때의 do_upload는 제 함수명 이랑은 상관 없었기 때문에 그렇게 생각함..) 하 ..그런데 왜 안받아지는걸까요?ㅠ 파일을 선택하지 않았다는 오류 메세지만 나오는데 .. |
변종원(웅파)
/
2013/07/16 14:23:44 /
추천
0
두번 돌리라는게 다른게 아닙니다.
$this->upload->do_upload($up1); $this->upload->do_upload($up2); |
수야디벨
/
2013/07/17 15:42:34 /
추천
0
웅파//
아 ..하루만에 무슨소리인지 알았어요 ;; 어제부터 웅파님 답변 보고 저게 무슨 소리일까 .. 하고 계속 생각하고 생각했거든요 웅파님은 모든걸 다 알려주셨는데 제가 그걸 이제야 알아들었네요 결국 해답을 찾았네요 ㅎㅎ 감사합니다 ㅎㅎ |
변종원(웅파)
/
2013/07/17 17:37:05 /
추천
0
수야디벨/ 홧팅~~~~ ^^
|
매뉴얼 보시면 userfile 대신 다른 파일명 쓸경우에 대한 것이 나와있습니다.
하나는 userfile, 다른건 usefile1 요래 처리하면 되겠죠.