csv 대용량 파일 인코딩 후 다운로드까지
ini_set('memory_limit',-1); // 무제한 set_time_limit(0); // 무제한 $filename = "Temp/shoppingmall.csv"; $local_file = $_SERVER['DOCUMENT_ROOT']."/excel/".$filename; $download_rate = 300; // 다운로드 속도 조절(?) if (is_file($local_file)) { // 파일 존재여부 // 헤더설정 csv라서 EUC-KR header("Content-Type: application/vnd.ms-excel; charset=EUC-KR"); header("Content-Length: ".filesize($local_file)); header("Content-Disposition: attachment; filename=shoppingmall.csv"); header("Pragma: public"); // IE 까지 고려하면 이거 필수 없으면 안됨 while (ob_get_level()) ob_end_clean(); // 현재까지 기록된거 비우기인가? // flush content flush(); // 출력한번 해주고 왜지 ? if (($handle = fopen($filename, "r")) !== FALSE) { // 파일 읽음 while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) { // 1000길이씩 ,단위로 읽기 // 읽어들인 $row를 다시 ,를 추가하여 바로 생성된 문자열을 // UTF-8 에서 EUC-KR로 인코딩한 후 맨 끝에 개행코드 추가하여 새로운 문자열 생성 $tempStr = iconv("UTF-8", "EUC-KR", join(',',$row)) . PHP_EOL; // 새로운 파일에 내용 넣고 저장 file_put_contents('Temp/shoppingmall-reversed.csv',$tempStr, FILE_APPEND); } fclose($handle); } // open file stream $file = fopen('Temp/shoppingmall-reversed.csv', "rb"); fpassthru($file); // close file stream fclose($file); // file delete unlink('Temp/shoppingmall-reversed.csv'); unlink('Temp/shoppingmall.csv'); } |
'Backend > PHP' 카테고리의 다른 글
Cookie Array Function (0) | 2020.03.12 |
---|---|
인증번호 6자리 (숫자) (0) | 2020.01.17 |
ftp 사용법 (0) | 2019.11.26 |
csv 한글 인코딩 (0) | 2019.11.26 |
파일 다운로드 용량제한 풀기 (0) | 2019.11.05 |