Я могу загрузить файл в базу данных с помощью sql, но как я могу сделать ссылку для загрузки? например, когда вы загружаете что-то в Интернете, появится окно с сообщением о том, хотите ли вы открыть его с помощью программы или сохранить ее. как я могу это сделать в php? можете ли вы дать мне коды для этого? я все еще ноб.
Поместите этот код на страницу (вместе с PHP-кодом, чтобы получить информацию из БД и поместить ее в переменные для имени / размера / данных, затем ссылку на эту страницу.
<?php header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $name_of_file); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size_of_file); echo $file_data; ?>
Не все заголовки, перечисленные выше, строго необходимы – на самом деле для правильной работы загрузки действительно нужен только заголовок Content-Type. Заголовок Content-Disposition хорош для включения, чтобы вы могли указать правильное имя файла; другие просто помогают браузеру обрабатывать загрузку лучше и могут быть опущены, если вы хотите.
Некоторые изменения в этом коде, чтобы он работал в моем случае. – Для MP3-файлов
Вы можете вызвать это, вызвав этот файл filedownload.php
– поместите его на свой сервер.
Вызовите его из файла, например: из поля WordPress Custom в этом примере
<a href="<?php bloginfo('url'); ?>/filedownload.php?download=<?php echo get_post_meta($post->ID, 'mymp3_value', true) ?>">MP3</a>
Очень просто сделать.
<?php $name_of_file = $_GET["download"]; header('Content-Description: File Transfer'); // We'll be outputting a MP3 header('Content-type: application/mp3'); // It will be called file.mp3 header('Content-Disposition: attachment; filename=' .$name_of_file); header('Content-Length: '.filesize($name_of_file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); // The MP3 source is in somefile.pdf //readfile("somefile.mp3"); readfile_chunked($name_of_file); function readfile_chunked($filename) { $chunksize = 1*(1024*1024); // how many bytes per chunk $buffer = ''; $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, $chunksize); print $buffer; } return fclose($handle); } ?>