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


iccup
137

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

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

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

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


lutskboy

ну так определяй расширение. либо с помощью php


LEOnidUKG

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

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

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


edogs software

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

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

ну и

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


iccup

<?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;
}
}

?>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *