Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос на сохранение графического файла
 
 автор: NorthWind   (04.09.2005 в 23:57)   письмо автору
 
 

А вот такой вопрос... Как сделать чтобы при клике на ссылке типа <a href=1.jpg>Скачать картинку</a> открывалось не окно браузера с этой самой картинкой, а выдавался запрос на сохранение файла? Знаю что как-то можно с помощью HEADER(), но что-то не могу найти, где я это читал=((

   
 
 автор: cheops   (05.09.2005 в 01:44)   письмо автору
 
   для: NorthWind   (04.09.2005 в 23:57)
 

Нужно вместо картинки - дать ссылку на PHP-файл, где перед выводом изображения отправить следующие заголовки
<?php
  header
("Content-Disposition: attachment; filename=file.gif"); 
  
header("Content-type: application/octet-stream"); 
?>


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=242

   
 
 автор: NorthWind   (06.09.2005 в 14:20)   письмо автору
 
   для: cheops   (05.09.2005 в 01:44)
 

Спасибо... Полпути пройдено=)))

Создал файл download.php в дирректории с картинками.

Листинг файла download.php:
<?
$str
="Content-Disposition: attachment; filename=".$file;
header($str); 
header("Content-type: application/octet-stream");
?>
При клике на ссылку <a href="../pix/download.php?file=0001.jpg>скачать</a>" действительно выдается запрос на сохранение файла 0001.jpg. Выбираю "сохранить". В указанной папке действительно появляется файл с именем 0001.jpg, но его размер равен 0 байт, в то время как размер файла на сервере составляет 3Кб. В чем проблема?

   
 
 автор: cheops   (06.09.2005 в 14:24)   письмо автору
 
   для: NorthWind   (06.09.2005 в 14:20)
 

А ещё содержимое файла необходимо отправить
<? 
$str
="Content-Disposition: attachment; filename=".$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents($file);
?>

   
 
 автор: NorthWind   (06.09.2005 в 14:40)   письмо автору
 
   для: cheops   (06.09.2005 в 14:24)
 

Спастбо!!! Самый четкий форум=)) Практически он-лайн консультация по РНР=))) Продолжайте в том же духе=)))!!!!

   
 
 автор: 1999   (20.02.2006 в 10:45)   письмо автору
 
   для: NorthWind   (06.09.2005 в 14:40)
 

такой вопрос: а что делать если мне надо аттачем avi шку передать?
file_get_contents тут не работает

   
 
 автор: cheops   (20.02.2006 в 14:26)   письмо автору
 
   для: 1999   (20.02.2006 в 10:45)
 

Передать куда?

PS Под новые вопросы, лучше заводить новые темы.

   
 
 автор: Sasha   (04.12.2005 в 14:03)   письмо автору
 
   для: cheops   (06.09.2005 в 14:24)
 

Что -то не пойму, создал файл doun.php с

<? 
$str
="Content-Disposition: attachment; filename=".$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents($file); 
?> 

и даю ссылку <a href="pict/doun.php?file=1.jpg">скачать</a> и получаю запрос на сохранение doun.php а не 1.jpg
почему???

   
 
 автор: cheops   (04.12.2005 в 14:33)   письмо автору
 
   для: Sasha   (04.12.2005 в 14:03)
 

Что прописано в $file?

PS Под новые вопросы, лучше заводить новые темы...

   
 
 автор: Sasha   (04.12.2005 в 15:21)   письмо автору
 
   для: cheops   (04.12.2005 в 14:33)
 

В смысле, где прописано?
Вот даю ссылку <a href="pict/doun.php?file=1.jpg">скачать</a>


Это как-бы продолжение :)

   
 
 автор: cheops   (05.12.2005 в 03:29)   письмо автору
 
   для: Sasha   (04.12.2005 в 15:21)
 

А чем качаете?

   
 
 автор: Sasha   (05.12.2005 в 11:17)   письмо автору
 
   для: cheops   (05.12.2005 в 03:29)
 

Да просто в ИЕ перехожу по ссылке, и получаю предложение загрузить doun.php, вместо 1.jpg

Или я что-то неправильно понял в вышеизложенных примерах?

   
 
 автор: cheops   (05.12.2005 в 12:26)   письмо автору
 
   для: Sasha   (05.12.2005 в 11:17)
 

Хм... странно в IE бы проблем не должно таких возникать...

   
 
 автор: Sasha   (05.12.2005 в 13:59)   письмо автору
 
   для: cheops   (05.12.2005 в 12:26)
 

Добавил в начало кода

$file = $_GET['file'];

и всё заработало.

Но работает, если фото в той-же папке, где и файл. Можо ли указать путь к фоткам в другой директории. Тоесть, чтоб все фотки лежали не там где скрипт.

   
 
 автор: Loki   (05.12.2005 в 14:16)   письмо автору
 
   для: Sasha   (05.12.2005 в 13:59)
 

указывайте относительные пути:

вложенная папка
folder/
уровень выше
../
соседняя папка
../folder

и тд.
или абсолютные пути от корня сервера:

/home/users/account/yoursite.ru/folder/

   
 
 автор: Sasha   (05.12.2005 в 16:02)   письмо автору
 
   для: Loki   (05.12.2005 в 14:16)
 

Это понятно то, но ГДЕ это написать? Пробовал перед $files не получается.

Например для следующей папки, с именем W ?

   
 
 автор: cheops   (05.12.2005 в 22:13)   письмо автору
 
   для: Sasha   (05.12.2005 в 16:02)
 

Не очень понятно, что вызывает затруднение?

   
 
 автор: Sasha   (06.12.2005 в 00:01)   письмо автору
 
   для: cheops   (05.12.2005 в 22:13)
 

Вызываетзатруднения вот что:

Вложенная папка w, я кажется как угодно уже пытался подставить путь [b]w[//b] в файл

<? 
$file 
$_GET['file']; 
$str="Content-Disposition: attachment; filename=".$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents($file); 
?> 



но ничего толкового не получается.

   
 
 автор: cheops   (06.12.2005 в 11:04)   письмо автору
 
   для: Sasha   (06.12.2005 в 00:01)
 

А вот этот скрипт что-нибудь даёт
<? 
$file 
"w/file_in_w.mp3"
$str="Content-Disposition: attachment; filename=".$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents($file); 
?>

   
 
 автор: Sasha   (06.12.2005 в 12:31)   письмо автору
 
   для: cheops   (06.12.2005 в 11:04)
 

Да, даёт предложение сохранить файл doun.

Сохраняю, получаю doun.html и в нём строку

Warning: file_get_contents(w/file_in_w.mp3) [function.file-get-contents]: failed to open stream: No such file or directory in E:\Apach\pict\doun.php on line 6

   
 
 автор: cheops   (06.12.2005 в 19:56)   письмо автору
 
   для: Sasha   (06.12.2005 в 12:31)
 

А сам файл doun.html по отношению к директории w где расположен?

   
 
 автор: Sasha   (06.12.2005 в 23:17)   письмо автору
 
   для: cheops   (06.12.2005 в 19:56)
 

файла doun.html нет! Есть файл doun.php собственно про который мы и говорим.
Но при переходе по ссылке

<a href="pict/doun.php?file=1.jpg">скачать</a>
мы, вместио загрузки картинки, получаем загрузку самого doun.php !
У меня работал скрипт ( не знаю насколько он "правильный" )

<? 
$file 
$_GET['file']; 
$str="Content-Disposition: attachment; filename=".$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents($file); 
?> 


но только если фото там-же, где и скрипт. А я хочу чтоб они были во вложенной папке w
и что-то не выходит.

   
 
 автор: cheops   (07.12.2005 в 13:37)   письмо автору
 
   для: Sasha   (06.12.2005 в 23:17)
 

Хм... тогда вместо
<a href="pict/doun.php?file=1.jpg">скачать</a>

вам следует писать
<a href="pict/doun.php?file=w/1.jpg">скачать</a>

И как-то исправить
<?php
$str
="Content-Disposition: attachment; filename=".$file;
?>

Чтобы имя было подобающим.

   
 
 автор: Sasha   (07.12.2005 в 16:05)   письмо автору
 
   для: cheops   (07.12.2005 в 13:37)
 

Гм.
Суть этого дела была скрыть адресс к папке с фотографиями.
а если адресс писать в ссылке, то любой желающий его оттуда вытащит.
А нельзя в самом скрипте прописать адрес к директории, а по ссылке передавать тольки имя файла?

   
 
 автор: cheops   (08.12.2005 в 01:33)   письмо автору
 
   для: Sasha   (07.12.2005 в 16:05)
 

Тогда строку
<?php
$file 
$_GET['file'];
?>

заменяйте на
<?php
$file 
"w/".$_GET['file'];
?>

   
 
 автор: Sasha   (08.12.2005 в 11:53)   письмо автору
 
   для: cheops   (08.12.2005 в 01:33)
 

Так я уже пробовал, к сожалению не выходит.

Если я делаю

<?
$file 
"w/".$_GET['file']; 
$str="Content-Disposition: attachment; filename=" .$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents ($file); 
?> 


то получаю запрос сохранить файл doun, а не фото

А если так

<?php 
$file 
"w/".$_GET['file']; 
?> 
<? 
$str
="Content-Disposition: attachment; filename=" .$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents ($file); 
?> 


то имею
Warning: Cannot modify header information - headers already sent by (output started at E:\Apach\sasha\pc\pict\doun.php:4) in E:\Apach\pict\doun.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at E:\Apach\sasha\pc\pict\doun.php:4) in E:\Apach\pict\doun.php on line 7

и дальше похоже на картинку в виде текста. :(

   
 
 автор: cheops   (08.12.2005 в 12:59)   письмо автору
 
   для: Sasha   (08.12.2005 в 11:53)
 

А вы делайте не не так
<? 
$file 
"w/".$_GET['file']; 
$str="Content-Disposition: attachment; filename=" .$file
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents ($file); 
?>

а так
<? 
$file 
"w/".$_GET['file']; 
$str="Content-Disposition: attachment; filename=" .$_GET['file']; 
header($str); 
header("Content-type: application/octet-stream"); 
echo 
file_get_contents ($file); 
?>

   
 
 автор: Sasha   (08.12.2005 в 13:29)   письмо автору
 
   для: cheops   (08.12.2005 в 12:59)
 

Фууууу!
СПАСИБО огромное! Заработало!

   
 
 автор: Sasha   (05.12.2005 в 21:46)   письмо автору
 
   для: Loki   (05.12.2005 в 14:16)
 

.

   
 
 автор: 1999   (20.02.2006 в 10:46)   письмо автору
 
   для: Sasha   (05.12.2005 в 21:46)
 

такой вопрос: а что делать если мне надо аттачем avi шку передать?
file_get_contents тут не работает

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования