2014-10-04 3 views
2

내 루트 디렉토리에 files이라는 폴더가 있습니다. 이 폴더에는 1 Kb-1 GB의 파일이 있습니다.서버에서 클라이언트 컴퓨터로 파일 다운로드

나는 AJAX를 사용하여 파일을 비동기 적으로 다운로드 할 수있는 PHP 스크립트를 원한다.

이 코드는 파일을 클릭하면 다운로드 스크립트를 시작합니다 :

JQUERY

$('.download').click(function(){ 
    var src =$(this).attr('src'); 
    $.post('download.php',{ 
     src : src //contains name of file 
    },function(data){ 
     alert('Downloaded!'); 
    }); 
}); 

PHP

<?php 
    $path = 'files/'.$_POST['src']; 
    //here the download script must go! 
?> 
최선을 다 할 것입니다

, 가장 빠르고을 확보 파일을 다운로드하는 방법?

+0

가 - 왜? 서버에서 관리하는 것만으로는 불가능한 일은 무엇입니까? 왜 Ajax를 사용해야합니까? – Quentin

답변

3
<?php 
/** 
* download.php 
*/ 

if (!empty($_GET['file'])) { 
    // Security, down allow to pass ANY PATH in your server 
    $fileName = basename($_GET['file']); 
} else { 
    return; 
} 

$filePath = '???/files/' . $fileName; 
if (!file_exists($filePath)) { 
    return; 
} 

header("Content-disposition: attachment; filename=" . $fileName); 
header("Content-type: application/pdf"); 
readfile($filePath); 

그리고 Content-disposition: attachment를 사용하는 경우 실제로 AJAX 요청은 불필요하다 ". 나는 단순히 AJAX를 사용하여 비동기 적으로 파일을 다운로드 할 수있는 PHP 스크립트를 원한다"

<a href="download.php?file=file1.pdf">File1</a> 
+1

만약 내가'content-type'을 모른다면? –

+1

그럴 때는 사용하지 마십시오. 브라우저가 파일 열기 프로그램 (영화, 이미지, MS 단어 등)을 결정하는 데 도움이됩니다. –

+0

Content-Type을 사용할 수 없습니다. PHP는 그것을 재정의하지 않는 한 기본적으로 HTML 문서라고 주장합니다. – Quentin

관련 문제