zvezda_t
10.07.2014 - 09:03
Всем привет!
Когда на моём сайте, пользователь нажимает на кнопку "скачать", открывается стандартное окно: "открыть в/сохранить".
Если нажать "Сохранить", то файл тут же сохраняется на диск C:/ в каталог "Загрузки".
Подскажите, пожалуйста, как сделать, чтобы пользователь мог выбрать свой каталог, для сохранения файла?
Функция, которая отправляет файл в браузер:
if(file_exists($file)){
header('Content-Description: File Transfer');
header('Content-Type: '.$mimes);
header('Content-Disposition: inline; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Length: ' . filesize($file));
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: private',false);
ob_clean();
flush();
readfile($file);
}
_____________
Что ты сделал сегодня - для завтра?"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
McLotos
10.07.2014 - 10:50
http://habrahabr.ru/post/151795/http://sitear.ru/material/php_skript_download_file
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
T1grOK
10.07.2014 - 11:25
Темой не интересовался, но думаю в целях безопасности такое сделать нельзя, только путем настройки самого браузера или через ухищрения(flash).
Если ошибаюсь, поправьте.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
McLotos
10.07.2014 - 11:28
T1grOK
по-моему браузер по умолчанию должен спрашивать куда качать. а не тупо закидывать файл в каталог по умолчанию. Хотя самый лучши в мире браузер GoogleChrome не спрашивает, что тоже правильно, он либо качает в папку Загрузки которая под это и заточена, либо в ту папку, которая была указана в настройках.
Но вот раз уж появляется окно с кнопочками "Сохранить", "Открыть". то в таком случае при клике на кнопке "Сохранить" должно открываться диалоговое окно в котором можно выбрать путь сохранения, но такое я в хроме не видел, помню только в IE, Opera и Firefox такое было, хотя последние версии оперы делались на движке хрома, а Firefox перестал спрашивать это где-то 2 версии назад
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
zvezda_t
10.07.2014 - 12:17
SergeySA, извини, я что то не поняла...
Так мой скрипт, верный? Ничего исправлять не нужно?
Просто это сам браузер не позволяет каталог выбрать, так что ли? (я использую firefox)
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
McLotos
10.07.2014 - 12:26
zvezda_t
я протестировал этот скрипт в своём Chrome он вообще просто открыл мне файл. вместо того чтобы его качать. Кстати, как генерируется ссылка на скачивание?
как-то так?
<a href="$address" type="application/file">Ссылка</a>
$address - это не путь к файлу, а вызов скрипта. чтобы спрятать реальное расположение файла на сервера
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
zvezda_t
10.07.2014 - 13:11
у меня методом Post отправляется, так как имя файла содержит русские буквы, то по ссылке не хочет открываться у меня. Важный момент: использую фреймворк Codeigniter.
Если бы была просто ссылка, можно было бы правой кнопкой сохранять (сохранить как и всё :) ).
<form action="/patch/to/function/" method="Post">
<input type="submit" value="скачать">
<input type="hidden" name="name_file_rus" value="<?=$name_file?>">
</form>
_____________
Что ты сделал сегодня - для завтра?"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
McLotos
10.07.2014 - 13:32
Может над этим может поработать JS? он же как бы работает в клиентской части, а значит может заставить браузер при клике по ссылке выдать окно сохранения файла
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
zvezda_t
10.07.2014 - 13:43
SergeySA, научите пожалуйста, как это сделать?
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)
McLotos
10.07.2014 - 14:25
Ну например для IE пойдет вот так вариант
onclick="javascript:document.execCommand('SaveAs','1','путь к файлу')
для всех остальных браузеров сейчас поковыряюсь
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.