Переименование файлов при скачивании

iccup
На сайте с 01.05.2016
Offline
195
155
<a download href="/uploads/posts/kartinka.jpg">Download</a>

Сейчас так, но я хочу задавать другие имена картинкам при скачивании. Есть вариант -

<a download="123.jpg" href="/uploads/posts/kartinka.jpg">Download</a>

но читал что есть проблемы с  Safari, IE. Тем более нужно явно указывать расширение файла, а они бываю разные. Как еще можно осуществить мою задумку?


kimsufi.com ( https://www.kimsufi.com ) очень дешевые и качественные дедики https://clck.ru/gvF9p - антибот, использую уже 3 года.
lutskboy
На сайте с 22.11.2013
Offline
176
#1
ну так определяй расширение. либо с помощью php
LEOnidUKG
На сайте с 25.11.2006
Offline
1743
#2

Или через php отдавать файлы

Или искать JS скрипты костыли для поддержки сафари, про IE забудьте.

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

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#3
iccup :
но читал что есть проблемы с  Safari, IE. Тем более нужно явно указывать расширение файла, а они бываю разные. Как еще можно осуществить мою задумку?

Можно апачем при ограниченном количестве файлов, тип того (лениво синтаксис вспоминать)
rewriterule 123.jpg /upload/kartinka.jpg

ну и

<a download href="123.jpg">Download</a>
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
iccup
На сайте с 01.05.2016
Offline
195
#4
<?php

$dir=$_SERVER['DOCUMENT_ROOT'];
$file=$dir.'/uploads/posts/'.urldecode($_GET['f']);

download($file);

function download($file){
if (file_exists($file)) {

if (ob_get_level()) {
ob_end_clean();
}

$extension = pathinfo($file, PATHINFO_EXTENSION);

$new_name = uniqid().'.'.$extension;

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' .$new_name);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
else{

echo 'Can\'t find the file: '.$file;
}
}

?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий