Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   проблемы с download (http://www.flasher.ru/forum/showthread.php?t=33295)

ZJA 19.06.2002 10:26

проблемы с download
 
download.php
Код:

<?$fileDir="путь";$fileName="файл.blablabla";
$completeFilePath=$fileDir.'/'.$fileName;
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
header('Content-type: application/exe');
header('Content-Disposition:attachment');
header('filename=\"".$fileName."\"\nContent-length: ".(string)(filesize($completeFilePath))');
$fd=fopen($completeFilePath,'rb');
fpassthru($fd);?>

когда человек запускает этот файл, получает окошко сохранить как
засада в том, что в этом окошке ему предлогают сохранить файл download.php , а не файл.blablabla!!! Т.е. на самом деле будет сохранен файл.blablabla, но назвать его предлагают download.php, как это побороть? Чтоб окошке сохранить как, сразу стояло настоящее имя файла, и еще... кто знает как, нормально можно осуществить отправку файлов пользователям тоже пишите, данный пример я взял с www.php.net

sapenov 19.06.2002 11:21

тут рабочий пример:

http://php.kz/download3.php

ZJA 19.06.2002 12:32

нето
 
я имею ввиду скачать, а не просмотреть, разница маленькая, но существенная, не фурычит короче

Crazy 19.06.2002 15:59

Самое простое решение -- сделать так, чтобы URL отдающего скрипта имел вид:

/myscript.php/myfile.zip

И все проблемы пройдут. :)

ZJA 19.06.2002 17:57

2crasy
 
да, наверное, я уже по всякому пробовал, по-другому не выходит аленький цветочек, но теперь хотелось бы вызывать такую вещь из объекта, как ф-цию, а это уже полная засада, как ты там передашь урл?

sapenov 19.06.2002 18:01

Re: нето
 
Цитата:

Оригинал написал(а) ZJA
я имею ввиду скачать, а не просмотреть, разница маленькая, но существенная, не фурычит короче
see working example at http://www.php.kz/download2.php

я дал ссылку на код и работающий пример. все там фурычит.

Crazy 19.06.2002 18:19

Чтоб оно фурычило как просил автор нужно все же не рандом передавать, а нормальное имя. :D

ZJA 19.06.2002 18:25

see working example at http://www.php.kz/download2.php
вот что там видно, а больше ничего не видно, а тот код что
download3.php - тот код мою проблему не лечит

Crazy 19.06.2002 18:29

Вылечит -- ты вместо рандома проставь имя нужного тебе файла. :)

ZJA 19.06.2002 18:39

не лечит
 
сабж

Crazy 19.06.2002 18:55

Лечит. Вот полный текст:

Код:

<?php
header('Pragma: no-cache');
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=foobar.zip");
?>
Just a test...

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

sapenov 19.06.2002 22:28

тут по-моему не только проблему лечить надо :)

ZJA 20.06.2002 09:44

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

Crazy 20.06.2002 12:38

Цитата:

Оригинал написал(а) ZJA
требуется даунлоад файла лежащего не рядышком со скриптом, а допустим в соседней директории


Какое это иммеет значение?

Цитата:

2. все это я хочу организовать в ф-цию, а если мы пересылаем заголовки, то логично(на мой взгляд, я могу и ошибаться), что потребуется открывать дополнительное окно
Ты не должен ХОТЕТЬ открыть дополнительное окно средстами PHP.

juggy 24.06.2002 20:48

http://forum.alesh.ru/showthread.php...id=536#post536

ZJA 24.06.2002 23:48

ну в общем, это проблему не решает
 
товарищи, сказано было много, но по делу мало, собственно все дают ссылки которые в конце концов ведут на php.net и вообще мы остановились на том что качественно скачать файл с передачей в окно названия можно только надругавшись над урлом к скрипту(имеется ввиду случай, когда файл лежит не в одном каталоге вместе со скриптом), у кого-нибудь еще будут варианты
2крези(персонально), 1.значение большое,2.php->xml->html->jvscript->новое окно, и вообще я все хочу))))

Crazy 25.06.2002 00:18

Re: ну в общем, это проблему не решает
 
Цитата:

Оригинал написал(а) ZJA
мы остановились на том что качественно скачать файл с передачей в окно названия можно только надругавшись над урлом к скрипту(имеется ввиду случай, когда файл лежит не в одном каталоге вместе со скриптом)
И все таки: при чем здесь "файл лежит не в одном каталоге вместе со скриптом"?

sapenov 25.06.2002 07:23

(тоже персонально Crazy)
У тебя просто ангельское терпение :)

зы.
по-моему нужно путь указывать в переменной - $dir
название файла в переменной - $filename
затем конкатенация : $dir.$filename



ZJA 25.06.2002 10:52

блин
 
при том что если файл лежит не в одном каталоге со скриптом, т.е. вместо имени передается путь+имя, то ничего не работает, ошибки не возвращается, а получается как всегда, логи: сервер завершил операцию... и все! и никакого эффекта, что запустили скрипт,что радио послушали

Crazy 25.06.2002 11:41

Покажи точный код скрипта. Ибо у меня все пракрасно работает независимо от взаимного размещения скриптов и файлов.

sapenov 25.06.2002 17:46

и верно - код в студию !
также результаты phpinfo();

У кого плохие яйца - тот плохой танцор.

ZJA 29.06.2002 18:21

пытаюсь разобраться сам
 
боюсь я что-то phpinfo в студию))), но как-то не выходит аленький цветочек, а сделал я все совес не так... через https

sapenov 01.07.2002 06:38

за бдительность - пять ,
за знание предмета - двойка !

ZJA 09.07.2002 13:32

не прошло и года)))
 
разобрался я с данным вопросом и сделал все отдельной ф-цией, причем вышло все компактно и красиво, т.е. качай чего хочешь - только авторизируйся. А вся фишка была в том что не
header('Content-Disposition:attachment');
а
header('Content-Disposition:inline');
может кто дать по данной теме комментарий?
потому как на www.php.net специально указано что использовать необходимо именно attachment, а не inline
и еще один вопрос: вот у нас был передан некий контент на страницу, юзер сказал хочу этот файл и получил этот файл, а как после того как он его получил(или во время получения), поменять контент? (и можно ли это вообще сделать)
И еще была тема о докачке, почитал ее, но хочу еще раз поднять этот вопрос, допустим файл пользователь скачал не целиком и связь разорвалась, как осуществить докачку средствами сервера и возможно ли такое в принципе. Если я все правильно понял тут надо уже не fpassthru() использовать, а писать ф-цию посылки файла самому, т.к. fpassthru() уж очень однобока, и вдруг кто-то уже написал свой вариант этой ф-ции более гибкий, прошу поделиться.

Crazy 10.07.2002 08:52

Для докачки необходима поддержка на стороне клиента. В IE она отсутствует, IMHO.

ZJA 10.07.2002 10:29

а если...
 
свой клиент написать, есть же всякие reget, fashget, etc. я уверен можно и свой написать, а у тебя что: что-то есть на данную тему;)))

advocat 11.07.2002 02:23

Кстати, так как мне пришлось здесь некоторых господ консультировать по аське, что и к чему, приведу пример как сделан даунлоад на пхп.нет, а сделан он весьма забавно ...
не через замысловатые функции, а более тупо, а так как он открыт, и исходники тоже, то смотрим :

http://www.php.net/source.php?url=/do_download.php

вот как там сделано !
Код:

if (!isset($download_file)
    || !file_exists("distributions/$download_file")) {
    exit("Invalid file requested for download!");
}
// комментирую, просто банальная проверка сущаствования переменной и файла

header("Location: http://$SERVER_NAME/distributions/$download_file");

// Обычная переадресация на файл !

А по поводу того, что файл можно скачать, только тот, что в директории со скриптом, я не согласен ! пробовал и так и сяк, все замечательно работает тем более используя :
Код:

$dfile = "../download/file.zip"
header('Pragma: no-cache');
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=$dfile");



Часовой пояс GMT +4, время: 00:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.