У меня есть список изображений, и я хочу ссылку «Загрузить» вместе с каждым изображением, чтобы пользователь мог загрузить изображение.
так может ли кто-нибудь мне посоветуться Как предоставить ссылку для скачивания для любого файла в php?
РЕДАКТИРОВАТЬ
Я хочу, чтобы панель загрузки отображалась при нажатии ссылки для загрузки. Я не хочу просматривать изображение, которое будет отображаться в браузере.
Если вы хотите принудительно загрузить, вы можете использовать что-то вроде следующего:
<?php // Fetch the file info. $filePath = '/path/to/file/on/disk.jpg'; if(file_exists($filePath)) { $fileName = basename($filePath); $fileSize = filesize($filePath); // Output headers. header("Cache-Control: private"); header("Content-Type: application/stream"); header("Content-Length: ".$fileSize); header("Content-Disposition: attachment; filename=".$fileName); // Output file. readfile ($filePath); exit(); } else { die('The provided file path is not valid.'); } ?>
Если вы просто ссылаетесь на этот скрипт, используя обычную ссылку, файл будет загружен.
Кстати, фрагмент кода выше должен быть выполнен в начале страницы (до появления каких-либо заголовков или вывода HTML.) Также позаботьтесь, если вы решили создать функцию, основанную на этом, для загрузки произвольных файлов – вам нужно будет убедитесь, что вы предотвращаете обход каталога ( реальный путь удобен), разрешает только загрузки из определенной области и т. д., если вы принимаете входные данные из $ _GET или $ _POST.
Решение проще, чем вы думаете;) Простое использование:
header('Content-Disposition: attachment');
И это все. Например, Facebook делает то же самое.
В атрибуте download
HTML5 тега <a>
можно использовать:
echo '<a href="path/to/file" download>Download</a>';
Этот атрибут используется только в том случае, если атрибут href установлен.
Ограничений на допустимые значения нет, и браузер автоматически обнаружит правильное расширение файла и добавит его в файл (.img, .pdf, .txt, .html и т. Д.).
Подробнее читайте здесь .
Вы можете сделать это в .htaccess и указать для разных расширений файлов. Иногда бывает проще сделать это, чем жесткое кодирование в приложении.
<FilesMatch "\.(?i:pdf)$"> ForceType application/octet-stream Header set Content-Disposition attachment </FilesMatch>
Кстати, вам может понадобиться очистить кеш браузера, прежде чем он будет работать правильно.