2010-03-15 1 views

답변

2

이것은 불가능합니다. 현재 요청한 자원과 다른 자원을 처리하는 f}을 클라이언트에 지시 할 수 없습니다.

프록시 만 사용하여 외부 외부 파일을 가져 와서 클라이언트에 전달할 수 있습니다.

0

HTTP 헤더를 제어하지 않으면 파일 다운로드를 강제로 수행 할 수 없다고 생각합니다. Content-disposition: attachment이이 작업을 수행하는 유일한 방법입니다.

Content-disposition: attachment; filename=myfile.jpg 
Location: http://www.somesite.com/myfile.jpg 

(그건 아마 잘못된 및/또는 단지 나쁜 관행 긴 샷)

이 비록

아마 내 유일한 추측이 Location 헤더 Content-disposition를 결합하려고 할 것입니다 작동하지 않을
5

먼저 서버에 리소스를로드해야합니다. 또한 일부 캐싱을 수행 할 수 있습니다 : 나는 유사한 방법을 사용

header("Content-type: attachment/octet-stream"); 
header('Content-disposition: attachment; filename="'.$filename.'"'); 
+0

하지만 file_get_contents()는 파일을 로컬 서버로 읽어들입니다. – Cory

+0

일시적으로 메모리 또는 임시 디스크에만 있습니다. 그러나 최선의 방법입니다. 다른 방법은 없습니다. 외부 리소스의 응답 헤더를 변경할 때마다 프록시로 작동해야합니다. – BalusC

0

내가 전술 "내용 - 처리"헤더의 조합을 사용뿐만 아니라 유형을 강제 mp4 파일을 다운로드 할 때 텍스트 파일을 사용할 수 있습니다.

$file=fopen('http://example.com/example.txt','r'); 
header("Content-Type:text/plain"); 
header("Content-Disposition: attachment; filename="example.txt"); 
fpassthru($file); 
0

:

<?php 
    header("Content-disposition: attachment; filename=myfile.jpg"); 
    echo file_get_contents("http://host.tld/path/to/myfile.jpg"); 
?> 
+0

먼저이 파일을 서버에 다운로드하거나 직접 사용자에게 제공합니다. – Sumit

+0

실제로 파일을 다운로드하여 처음에는 RAM에 저장하므로 서버의 속도에 많은 영향을줍니다. – Sumit

0

다운로드 속성을 사용할 수 있습니다. 다운로드 링크에 download = 'filename.extension'을 추가하십시오 :

<a link='mysite.com/sfsf.extension' download='filenameuwant.extension'></a> 
관련 문제