반응형
파일 업로드 및 다운로드
/** 파일 업로드 처리 */// <input type="file" name="file[]"/>$files = $_FILES['file'];$cpt = count($_FILES['file']['name']); for($i=0; $i<$cpt; $i++) { $_FILES['file']['name']= $files['name'][$i]; $_FILES['file']['type']= $files['type'][$i]; $_FILES['file']['tmp_name']= $files['tmp_name'][$i]; $_FILES['file']['error']= $files['error'][$i]; $_FILES['file']['size']= $files['size'][$i]; $config = $this->config->item('upload'); // 파일이 업로드 될 폴더가 존재하지 않는다면 생성한다. // --> './files/upload/' 경로에 대한 처리가 수행된다. if (!is_dir($config['upload_path'])) { // 경로, 퍼미션, 하위폴더 생성 여부 설정 mkdir($config['upload_path'], 0766, TRUE); } $this->upload->initialize($config); $upload = $this->upload->do_upload('file'); $data = $this->upload->data(); if (!empty($upload)) { // 원본 파일명 $this->file_dao->orginName = $data['client_name']; // 파일이 저장된 경로 $filename = $data["file_name"]; $this->file_dao->fileDir = "./files/upload/".$filename; $this->file_dao->fileName = $filename; // 파일 형식 $this->file_dao->contentType = $data['file_type']; $this->file_dao->fileSize = $data["file_size"]; // 등록일시 $this->file_dao->regDate = '{now()}'; // 변경일시 $this->file_dao->editDate = '{now()}'; // 파일이 속한 게시글의 일련번호 $this->file_dao->boardId = $boardId; // 작성자의 일련번호 $this->file_dao->memberId = $this->session->userdata("user_info")->memberId; // 데이터 저장하기 $result = $this->file_dao->insert(); if (!$result) { echo json_encode(array("rt" => "첨부파일 저장 실패")); // 업로드 된거 다시 삭제 exit; } }}
/** 파일 업로드 처리 */ // <input type="file" name="file[]"/> $files = $_FILES['file']; $cpt = count($_FILES['file']['name']); for($i=0; $i<$cpt; $i++) { $_FILES['file']['name']= $files['name'][$i]; $_FILES['file']['type']= $files['type'][$i]; $_FILES['file']['tmp_name']= $files['tmp_name'][$i]; $_FILES['file']['error']= $files['error'][$i]; $_FILES['file']['size']= $files['size'][$i]; $config = $this->config->item('upload'); // 파일이 업로드 될 폴더가 존재하지 않는다면 생성한다. // --> './files/upload/' 경로에 대한 처리가 수행된다. if (!is_dir($config['upload_path'])) { // 경로, 퍼미션, 하위폴더 생성 여부 설정 mkdir($config['upload_path'], 0766, TRUE); } $this->upload->initialize($config); $upload = $this->upload->do_upload('file'); $data = $this->upload->data(); if (!empty($upload)) { // 원본 파일명 $this->file_dao->orginName = $data['client_name']; // 파일이 저장된 경로 $filename = $data["file_name"]; $this->file_dao->fileDir = "./files/upload/".$filename; $this->file_dao->fileName = $filename; // 파일 형식 $this->file_dao->contentType = $data['file_type']; $this->file_dao->fileSize = $data["file_size"]; // 등록일시 $this->file_dao->regDate = '{now()}'; // 변경일시 $this->file_dao->editDate = '{now()}'; // 파일이 속한 게시글의 일련번호 $this->file_dao->boardId = $boardId; // 작성자의 일련번호 $this->file_dao->memberId = $this->session->userdata("user_info")->memberId; // 데이터 저장하기 $result = $this->file_dao->insert(); if (!$result) { echo json_encode(array("rt" => "첨부파일 저장 실패")); // 업로드 된거 다시 삭제 exit; } } } |
이미지 다운로드 헤더 설정
$item = $this->file_dao->where("orginName", $fileName)->select_one(); if (!empty($item)) { $filePath = $item->fileDir;
$size = filesize("./files/upload/".$item->fileName);
if (is_file("./files/upload/".$item->fileName)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $fileName); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size); $fp = fopen($filePath, "rb"); fpassthru($fp); fclose($fp); } } |
파일의 존재유무를 DB에서 조회
파일 주소를 변수에 설정 - $filePath
파일 사이즈 변수에 설정 - $size (이 때 파일 경로는 ./업로드폴더경로/파일명 으로 한다 base_url X)
header 설정 후 파일 읽기
$filePath = ./files/upload/파일명 형식으로 db에 저장
- > ./files/upload/8d20425fba824fea504146dd7a6497f5.png
$item->fileName = 파일명.확장자 형식으로 db에 저장
- > 8d20425fba824fea504146dd7a6497f5.png
반응형
'Backend > PHP' 카테고리의 다른 글
날짜 비교 (stamp) (0) | 2019.07.16 |
---|---|
php CodeIgniter index.php 죽이기 (0) | 2019.07.06 |
접근 방지 (0) | 2019.06.23 |
리퍼럴 체크 (0) | 2019.06.23 |
정규식 표현 (0) | 2019.06.23 |