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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Переслать текстовик заголовком

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: Anwor   (28.07.2006 в 12:27)   письмо автору
 
   для: Anwor   (28.07.2006 в 12:05)
 

А, всё, я разобрался!! Именно так в конце и выводим (это для потомков )))))))
Итак, полный код скрипта (отлаженный):

<?php  
header
("Content-Disposition: attachment; filename=".basename($_GET['path']));      
header("Content-Type: application/octet-stream");    
echo 
file_get_contents($_GET['path']);
unlink($_GET['path']); 
?> 

Таким образом, файл удаляется сразу, но только после того, как вышло окошко сохранения. Сохраняется правильно. Люди, не повторяйте наших ошибок )))))))

Cheops, спасибо Вам большое, вы меня очень, очень, оооочень выручили.

   
 
 автор: Anwor   (28.07.2006 в 12:05)   письмо автору
 
   для: Anwor   (28.07.2006 в 12:04)
 

Понял насчет basename(), спасибо огромное.... но всё же хотелось бы еще избавиться от файла после его загрузки.. Можно ли после file_get_contents($file) вывести unlink($file)? Не запортит ли это чего?

   
 
 автор: Anwor   (28.07.2006 в 12:04)   письмо автору
 
   для: cheops   (28.07.2006 в 11:58)
 

Да, у меня там не только имя. Путь примерно такой: "temp/file.pdf"
Спасибо большое! Это уже многое мне дает для "экспериментов" )))
Но если организовать всё как вы говорите, то сам downfile.php должен находиться в одном каталоге со всеми файлами, верно? Как бы мне этого избежать, а то я хотел еще запустить кроновский клинер, который периодически чистил бы каталог "temp/" от оставшихся там файлов... может, можно как-то сделать, чтобы файлу делался unlink прямо после загрузки?..

   
 
 автор: cheops   (28.07.2006 в 12:00)   письмо автору
 
   для: cheops   (28.07.2006 в 11:58)
 

Извлечь имя файла из пути можно при помощи функции basename()
<?php 
header
("Content-Disposition: attachment; filename=".basename($_GET['path']));  
?>

   
 
 автор: cheops   (28.07.2006 в 11:58)   письмо автору
 
   для: Anwor   (28.07.2006 в 10:45)
 

Так, погодите, вы в строку
<?php
header
("Content-Disposition: attachment; filename=".$_GET['path']); 
?>

что передаёте? Путь? Это не правильно, здесь должно быть только имя файла, под которым он будет сохраняться у пользователя. Вот так вот правильно
<?php
header
("Content-Disposition: attachment; filename=text.txt"); 
?>

а вот так
<?php
header
("Content-Disposition: attachment; filename=test/text.txt"); 
?>

уже нет.

   
 
 автор: Anwor   (28.07.2006 в 11:28)   письмо автору
 
   для: Anwor   (28.07.2006 в 10:45)
 

Мда, кроме всего прочего выяснилось, что файлы типа TXT сохраняются как downfile.txt! Вот теперь я окончательно запутался.......

   
 
 автор: Anwor   (28.07.2006 в 10:45)   письмо автору
 
   для: cheops   (27.07.2006 в 22:22)
 

Это прямо на сервере. Скрипт выглядит именно так, 1 в 1. Вызывается с другой страницы заголовком

<?php
header
("location: downfile.php?path=$path");
?>

при этом переменная $path на предыдущей странице алертом показывает абсолютно верный путь. Но когда происходит скачивание, то:
1) если файл бинарный и не может быть отображен, то в окошке пишет:

Имя файла: downfile
Тип файла: неизвестный

2) если файл может интерпретироваться (html, php, txt и пр.), то окошко такое:

Имя файла: downfile
Тип файла: htm

А родное имя с расширением по каким-то причинам не запоминает... (((

   
 
 автор: cheops   (27.07.2006 в 22:22)   письмо автору
 
   для: Anwor   (27.07.2006 в 16:36)
 

Хм... и это в скрипте
<?php 
header
("Content-Disposition: attachment; filename=".$_GET['path']);     
header("Content-type: application/octet-stream");   
echo 
file_get_contents($_GET['path']);  
?>

Вообще не должно бы быть такого... это на локальной машине или на сервере хостинга?

   
 
 автор: Anwor   (27.07.2006 в 16:36)   письмо автору
 
   для: Anwor   (25.07.2006 в 17:27)
 

Cheops, пожалуйста, помогите мне разобраться с этой ситуацией, единственная препона осталась в сайте, никак не могу понять... заметил еще, что когда пытаюсь скачать с ФТП файл *.php, то он всё равно видит его как htm =( Может, он каким-то образом делает различия между бинарным типом и ASCII?? И почему он так упорно обзывает любой передаваемый файл именем передающего скрипта downfile?....

   
 
 автор: Anwor   (25.07.2006 в 17:27)   письмо автору
 
   для: cheops   (25.07.2006 в 15:02)
 

Да, извиняюсь, это я уже у себя исправил...
Всё равно та же ерундень. ((( Как же заставить его вспомнить реальное имя файла с расширением??

   

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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