2011-02-15 3 views
1

Codeigniter에서 다운로드 도우미의 force_download($file_name,$data) 기능을 사용하여 브라우저에서 파일을 다운로드하도록 할 수 있습니다.Codeigniter에서 파일을 열거 나 다운로드하도록 브라우저에 알리기

하지만 이것이 필요한 것은 아닙니다. Codeigniter가 해당 파일이 해당하는 MIME 형식으로 http 헤더에 응답하여 브라우저가 응용 프로그램의 존재 여부에 따라 파일을 다운로드하거나 다운로드하지 않도록 할 수 있습니다. 클라이언트 시스템에서 해당 MIME 유형에 대해 등록 된 경우 (해당 응용 프로그램이 해당 파일을 열 때).

Codeigniter에서이 작업을 수행 할 수있는 방법이 있습니까?

여러분 모두에게 감사드립니다.

답변

6

아니요, Codeigniter로는이를 수행 할 수 없습니다.

일반적으로 PHP와 같은 서버 측 기술을 사용하면 클라이언트와 직접 상호 작용하지 않고 클라이언트에만 컨텐츠를 보낼 수 있습니다. 어떤 콘텐츠를 보내든 그들이 원하는 것을 할 수있는 것은 고객의 몫입니다. javascript와 같은 클라이언트 측 툴을 사용하더라도 (고맙게도) 클라이언트 시스템과의 상호 작용이 제한적일 수 있습니다. 당신이하고 싶은 일은 웹 사이트가 (자동으로) 방문 할 때 소프트웨어를 다운로드하고 클라이언트 컴퓨터에서 실행할 수있게하는 것입니다 ...

이것은 악성 코드라고합니다 ... (제작자가 여러분에게 가져 왔습니다. 브라우저 또는 MIME에 등록 된 응용 프로그램이 있는지 여부에 따라 파일을 다운로드하지 않을 수 있도록

위는 ...

"직접 응답했다) ActiveX의에 입력 클라이언트 컴퓨터 (있는 경우 해당 응용 프로그램에서 해당 파일을 열 것임)

당신은 일반 PHP는 헤더 조작을 통해 MIME 타입을 설정할 수 있습니다

UPDATE. 다음 예제는 첫 번째 예제로 PHP header() documentation에서 직접 가져온 것입니다.

<?php 
// We'll be outputting a PDF 
header('Content-type: application/pdf'); 

// It will be called downloaded.pdf 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 

// The PDF source is in original.pdf 
readfile('original.pdf'); 
?> 
+0

맬웨어는 아니지만 사용자가 파일을 업로드했으며 웹 루트 외부에 파일을 저장했습니다. 사용자는 자신이 업로드 한 파일 만 다운로드 할 수 있습니다. 그래서 나는 Codeigniter에서 경로를 만들고 컨트롤러에있는 해당 기능 내에서 로그인 한 경우에만 (인증 된) 파일을 제공합니다. 나는 file_get_contents를 사용하여 파일을 읽었으며, 이제 파일이 webroot에서 제공되는 것처럼 파일을 다운로드하거나 열도록 브라우저에 알려주는 force_download와 같은 함수가 필요합니다. – bobo

+0

그래서 CI가 클라이언트 브라우저에 파일을 보내는 기능 (예 : HTTP 응답 헤더에서 올바른 MIME을 지정하는 기능)을 브라우저가 처리하도록 결정했는지 알고 싶습니다. force_download의 문제는 클라이언트 컴퓨터의 응용 프로그램에서 일반적으로 등록하지 않은 MIME 형식을 사용하여 브라우저가 파일을 다운로드하도록 강제하는 것입니다. – bobo

+0

업데이트 된 답변 – jondavidjohn

관련 문제