Как отобразить PDF-файл как загружаемый из типа BLOB из mysql в php? - PullRequest
0 голосов
/ 06 февраля 2020

Я загружаю PDF-файл в формате BLOB в mysql. Теперь я хочу скачать этот файл, используя тег гиперссылки. Как это сделать?. Код ниже не работает. Загрузить код

function do_upload_result($img){
 $files = $_FILES[$img];
  $ci = & get_instance();
  $ci->load->library('upload');
  $config['upload_path'] = 'uploads/';
  $config['allowed_types'] = 'pdf';
  $_FILES[$img]['name'] = time().'_'.$files['name'];
  $filename=$_FILES[$img]['name'];
  $_FILES[$img]['type'] = $files['type'];
  $_FILES[$img]['tmp_name'] = $files['tmp_name'];
  $_FILES[$img]['error'] = $files['error'];
  $_FILES[$img]['size'] = $files['size'];
  $ci->upload->initialize($config);
  if ($ci->upload->do_upload($img))
  {
    $prod_img = array('upload_data' => $ci->upload->data());
  }
  else
  {
  }
  return $ci->upload->data();


 $prod_img = 'marksheet';
$prodimg= do_upload_result($prod_img);
$imgdata = file_get_contents($prodimg['full_path']);

<a href="<?php echo 'data:application/pdf;base64,'.base64_encode($value['marksheet']); ?>" target="__blank">Download</a>

1 Ответ

0 голосов
/ 07 февраля 2020

Предполагая, что у вас есть контроллер с именем Test и у него есть метод с именем download(). Таким образом, URL-адрес будет таким, как вы отметили вопрос с помощью CodeIgniter:

<a href="http://www.example.com/test/download">Download PDF</a>

Далее, извлеките BLOB данные для файла из базы данных и поместите их в метод. Предполагая, что вы получаете $value['marksheet']; из вашей базы данных.

<?php

function download() {

    // Prevents out-of-memory issue
    if (ob_get_level()) {
        ob_end_clean();
    }

    // Here you should prepare $value['marksheet'];

    // Notice I passed $value['marksheet'] in base64_encode
    $encoded_data = base64_encode($value['marksheet']);

    // Decodes the encoded data
    $decoded_data = base64_decode($encoded_data);

    // Set a path where file_put_contents() will create a file
    $file = APPPATH . '../upload/temporary_file.pdf';

    // Writes data to the specified file
    file_put_contents($file, $decoded_data);

    // Modify the name as you want
    $filename = 'download_name.pdf';

    header('Expires: 0');
    header('Pragma: public');
    header('Cache-Control: must-revalidate');
    header('Content-Length: ' . filesize($file));
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    readfile($file);

    if (file_exists($file)) {
        unlink($file);  
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...