Как заставить скачать zip файл в codeigniter - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать простое веб-приложение для цифрового магазина, используя codeigniter. Я хотел бы использовать вспомогательную функцию принудительной загрузки, чтобы реальный URL-адрес файла не был известен пользователю. Я попытался следовать документации в codeignter - он работает, но файл поврежден.

Вот мой код

//* Get the website name
                $site = $this->Settings_model->getApllicationInfo();
                $sitename = $site->set_site_name;

                //* Prepare file for downloading

                $filename = $sitename.'-'.$item_info->item_id.'-'.$item_info->item_name;
                $locate = './static/files/zips/'.$file;
                force_download($locate, $filename);

Он загружает файл, но он сломан, пожалуйста, помогите мне или дайте мнелюбое другое предложение, которое я могу использовать.

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Используйте следующую функцию для загрузки файла

function auto_download($path, $name) {
  if(is_file($path))  {
    if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); }

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

    $mime = get_mime_by_extension($path);

    header('Pragma: public');
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($path)).' GMT');
    header('Cache-Control: private',false);
    header('Content-Type: '.$mime);
    header('Content-Disposition: attachment; filename="'.basename($name).'"'); 
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: '.filesize($path));
    header('Connection: close');
    readfile($path);
    exit();
}

}

0 голосов
/ 08 октября 2019

Я надеюсь, что вы используете расширение файла в имени файла, которое вы указываете для первого аргумента force_download(). Потому что Codeigniter использует MIME-type. Я надеюсь, что это будет работать для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...