외부에 이미지 또는 다른 파일이있는 경우 사용자가 링크를 클릭하면 브라우저가 강제로 다운로드 할 수 있습니까?PHP 또는 다른 언어로 외부에있는 파일의 다운로드를 시작하거나 강제 실행 하시겠습니까?
"Content-disposition : attachment;" 헤더를 사용하면 파일을 로컬에서 읽고 가져 오지 않고 외부에있는 파일에 대해서는 작동하지 않습니다.
외부에 이미지 또는 다른 파일이있는 경우 사용자가 링크를 클릭하면 브라우저가 강제로 다운로드 할 수 있습니까?PHP 또는 다른 언어로 외부에있는 파일의 다운로드를 시작하거나 강제 실행 하시겠습니까?
"Content-disposition : attachment;" 헤더를 사용하면 파일을 로컬에서 읽고 가져 오지 않고 외부에있는 파일에 대해서는 작동하지 않습니다.
이것은 불가능합니다. 현재 요청한 자원과 다른 자원을 처리하는 f}을 클라이언트에 지시 할 수 없습니다.
프록시 만 사용하여 외부 외부 파일을 가져 와서 클라이언트에 전달할 수 있습니다.
HTTP 헤더를 제어하지 않으면 파일 다운로드를 강제로 수행 할 수 없다고 생각합니다. Content-disposition: attachment
이이 작업을 수행하는 유일한 방법입니다.
Content-disposition: attachment; filename=myfile.jpg
Location: http://www.somesite.com/myfile.jpg
(그건 아마 잘못된 및/또는 단지 나쁜 관행 긴 샷)
이 비록 아마 내 유일한 추측이Location
헤더
Content-disposition
를 결합하려고 할 것입니다 작동하지 않을
먼저 서버에 리소스를로드해야합니다. 또한 일부 캐싱을 수행 할 수 있습니다 : 나는 유사한 방법을 사용
header("Content-type: attachment/octet-stream");
header('Content-disposition: attachment; filename="'.$filename.'"');
내가 전술 "내용 - 처리"헤더의 조합을 사용뿐만 아니라 유형을 강제 mp4 파일을 다운로드 할 때 텍스트 파일을 사용할 수 있습니다.
$file=fopen('http://example.com/example.txt','r');
header("Content-Type:text/plain");
header("Content-Disposition: attachment; filename="example.txt");
fpassthru($file);
다운로드 속성을 사용할 수 있습니다. 다운로드 링크에 download = 'filename.extension'을 추가하십시오 :
<a link='mysite.com/sfsf.extension' download='filenameuwant.extension'></a>
하지만 file_get_contents()는 파일을 로컬 서버로 읽어들입니다. – Cory
일시적으로 메모리 또는 임시 디스크에만 있습니다. 그러나 최선의 방법입니다. 다른 방법은 없습니다. 외부 리소스의 응답 헤더를 변경할 때마다 프록시로 작동해야합니다. – BalusC