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

iccup
На сайте с 01.05.2016
Offline
112
133
<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) очень дешевые и качественные дедики
lutskboy
На сайте с 22.11.2013
Offline
101
#1
ну так определяй расширение. либо с помощью php
LEOnidUKG
На сайте с 25.11.2006
Offline
1578
#2

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

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

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

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
edogs software
На сайте с 15.12.2005
Offline
734
#3
iccup :
но читал что есть проблемы с  Safari, IE. Тем более нужно явно указывать расширение файла, а они бываю разные. Как еще можно осуществить мою задумку?

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

ну и

<a download href="123.jpg">Download</a>
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход.
iccup
На сайте с 01.05.2016
Offline
112
#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;
}
}

?>

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