본문으로 바로가기

csv 대용량 파일 인코딩 후 다운로드까지

category Backend/PHP 2019. 11. 29. 23:33

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