Указание браузеру открыть или загрузить файл в Codeigniter - PullRequest
1 голос
/ 15 февраля 2011

В Codeigniter мы можем использовать функцию force_download($file_name,$data) из помощника загрузки, чтобы заставить браузер загружать файл.

Но это не то, что мне нужно, я бы хотел, чтобы Codeigniter отвечал на заголовок http типом MIME, которому соответствует файл, чтобы браузер мог загружать или не загружать файл в зависимости от того, зарегистрировано ли приложение для этого типа MIME на клиентском компьютере (если он есть, это приложение откроет этот файл).

Есть ли способ сделать это с Codeigniter?

Большое спасибо всем вам.

1 Ответ

6 голосов
/ 15 февраля 2011

Нет, вы не можете сделать это с помощью Codeigniter.

Вообще говоря, при использовании серверных технологий, таких как PHP, вы можете только отправлять контент клиенту, но не взаимодействовать напрямую с клиентом.Клиент должен делать то, что он хочет, с любым фрагментом контента, который вы им отправляете.Даже с такими инструментами на стороне клиента, как javascript, (к счастью) вы можете иметь только ограниченное взаимодействие с клиентским компьютером.То, что вы хотите сделать, это разрешить (автоматически) веб-сайту при посещении, загрузить часть программного обеспечения и запустить его на клиентском компьютере ...

, которая называется вредоносной программой ... (доставленной вамсоздатели ActiveX )

Выше был прямой ответ на

"... так что браузер можетили может не загружать файл, в зависимости от того, есть ли приложение, зарегистрированное для этого типа MIME на клиентском компьютере (если оно есть, это приложение откроет этот файл).

ОБНОВЛЕНИЕ

Вы можете установить тип mime с помощью простого заголовка php. Следующий пример взят непосредственно из php header() документации в качестве первого примера.

<?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');
?>
...