정보실

웹학교

정보실

php 강제로 다운로드하게 하는 함수

본문

function downloadFile($file) {

  $ar_ext = explode('.', $file);

  $ext = strtolower(end($ar_ext));

  $extensions = array(

    'bmp' => 'image/bmp',

    'csv' => 'text/csv',

    'doc' => 'application/msword',

    'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',

    'exe' => 'application/octet-stream',

    'gif' => 'image/gif',

    'htm' => 'text/html',

    'html' => 'text/html',

    'ico' => 'image/vnd.microsoft.icon',

    'jpeg' => 'image/jpg',

    'jpe' => 'image/jpg',

    'jpg' => 'image/jpg',

    'pdf' => 'application/pdf',

    'png' => 'image/png',

    'ppt' => 'application/vnd.ms-powerpoint',

    'psd' => 'image/psd',

    'swf' => 'application/x-shockwave-flash',

    'tif' => 'image/tiff',

    'tiff' => 'image/tiff',

    'xhtml' => 'application/xhtml+xml',

    'xml' => 'application/xml',

    'xls' => 'application/vnd.ms-excel',

    'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',

    'zip' => 'application/zip'

  );

  $ctype = isset($extensions[$ext]) ? $extensions[$ext] : 'application/force-download';

 

  if (file_exists($file) && is_readable($file)) {

    // required for IE, otherwise Content-disposition is ignored

    if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off');

 

 

    header('Pragma: public'); // required

    header('Expires: 0');

    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

    header('Cache-Control: private',false);    // required for certain browsers

    header('Content-Type: '. $ctype);

    header('Content-Disposition: attachment; filename='. $file .';' );

    header('Content-Transfer-Encoding: binary');

    header('Content-Length: '. filesize($file));

    readfile($file);

  }

  else {

    header('HTTP/1.0 404 Not Found');

    echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>";

  }

 

사용 예:

<?php

// HERE ADD THE downloadFile() function

 

$dir = 'download/';    // folder wth files for download

 

// $_GET['file'] contains the name and extension of the file stored in 'download/'

if (isset($_GET['file'])) {

  $file = $dir . strip_tags($_GET['file']);

  downloadFile($file);

}

?> 

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

페이지 정보

조회 161회 ]  작성일15-06-02 23:36
php

웹학교