Codeigniter Force скачать IE - PullRequest
       14

Codeigniter Force скачать IE

1 голос
/ 25 февраля 2011

У меня проблемы с помощником по загрузке, т. Е. По сути, я создал сайт, который динамически создает счета-фактуры в формате pdf и доказательства в формате pdf, в обоих случаях принудительная загрузка отлично работает в Firefox, Chrome и Opera. В IE это происходит каждый раз, и я получаю следующую ошибку: Невозможно загрузить $ filename с mysite.com

Невозможно открыть этот интернет-сайт. Запрашиваемый сайт либо недоступен, либо не найден. Пожалуйста, попробуйте позже.

Для начала force_download у меня есть якорная цель _blank с URL-адресом, указывающим на следующий контроллер:

        function view_uploaded_file($order = 0, $name = NULL){

        $this->load->helper('directory');

        $params['where'] = array('id' => id_clean($order));

        $data['order'] = $this->MOrders->get($params);

        if($data['order']->id < 1){

            redirect('admin/orders');

        }

        $name = db_clean(urldecode($name));

        $map = directory_map('./uploads/customer_order_uploads/'.$data['order']->user_id.'/'.$data['order']->id, 1);

        if(is_array($map) && in_array($name, $map)){

            $this->load->helper('download');

            $data = file_get_contents('./uploads/customer_order_uploads/'.$data['order']->user_id.'/'.$data['order']->id.'/'.urldecode($name));

            force_download($name, $data);

        } else {

            redirect('admin/orders');

        }

    }

Изначально я подумал, что, возможно, проблема с MY IE, но я могу скачать PDF-файлы на других сайтах. Затем я подумал, что это может быть проблемой с помощником загрузки codeigniters, но я вижу, что они уже сделали специальные положения для IE в помощнике.

Если у вас есть идеи, пожалуйста, дайте мне знать. Спасибо.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Честно говоря, я не уверен, почему нам надоел помощник для загрузок в коде воспламенителя.

Это не совсем сложно сделать на чистом php:

Этот замечательный вопрос / ответ обрисовывает в общих чертах, как сделать это довольно хорошо.

Реальная вещь, которую нужно помнить, это content-disposition: attachment часть заголовков.Это то, что говорит браузеру, что файл должен быть загружен и сохранен, а не пытаться показать его в браузере.

Все браузеры обрабатывают вещи по-разному, возможно, в вашей установке IE есть что-то, что переопределяет поведение, но если выследуя инструкциям в связанной статье, вы должны правильно загрузить файлы во всех браузерах.

По сути, есть три вещи, которые мы должны сообщить браузеру:

  • Тип содержимого
  • Имя файла
  • Как обрабатывать входящие данные
  • (Необязательно Четвёртый, если есть) Размер файла (Длина содержимого)

Затем вы просто выводите эти данные прямо в буфер вывода.

Ответ

В ответ на ваши ответы, это, вероятно,функция безопасности, позволяющая автоматически не загружать что-либо во всплывающем окне, вероятно, одна из новых вещей, введенных в IE для борьбы с предыдущими дырами в безопасности.

1 голос
/ 25 февраля 2011

Ну, я нашел хотя бы временное решение проблемы.Все мои ссылки для принудительного скачивания были целевыми _blank..once я создал стандартные не всплывающие ссылки, которые загружали файлы в IE.Вероятно, есть какой-то способ обойти, но я также понял, что действительно нет необходимости во всплывающем окне для загрузки в любом случае ... диалоговое окно загрузки уже служит этой цели.

...