Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как поменять Имя файла при загрузке?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
LifePlay
Отправлено: 16 Апреля, 2011 - 03:32:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Авг. 2010  
Откуда: Кобеляки, Украина


Помог: 0 раз(а)




Был файл например file.gif
Юзер переходит на load.php и ему отдаётся file.gif с именем site_file.gif
(Добавление)
Я нашол такой код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $filename = $cd."/".$fn;
  3. if (!file_exists($filename))
  4.    {
  5.     header ("HTTP/1.0 404 Not Found");
  6.     exit;
  7.    }
  8. $fsize = filesize($filename);
  9. $ftime = date("D, d M Y H:i:s T", filemtime($filename));
  10. $fd = @fopen($filename, "rb");
  11. if (!$fd){
  12.   header ("HTTP/1.0 403 Forbidden");
  13.   exit;
  14. }
  15. // Если запрашивающий агент поддерживает докачку
  16. if ($HTTP_SERVER_VARS["HTTP_RANGE"]) {
  17.   $range = $HTTP_SERVER_VARS["HTTP_RANGE"];
  18.   $range = str_replace("bytes=", "", $range);
  19.   $range = str_replace("-", "", $range);
  20.   if ($range) {fseek($fd, $range);}
  21. }
  22. $content = fread($fd, filesize($filename));
  23. fclose($fd);
  24. if ($range) {
  25.   header("HTTP/1.1 206 Partial Content");
  26. }
  27. else {
  28.   header("HTTP/1.1 200 OK");
  29. }
  30. header("Content-Disposition: attachment; filename=$fn");
  31. header("Last-Modified: $ftime");
  32. header("Accept-Ranges: bytes");
  33. header("Content-Length: ".($fsize-$range));
  34. header("Content-Range: bytes $range-".($fsize -1)."/".$fsize);
  35. header("Content-type: application/octet-stream");
  36. print $content;
  37.  
  38. ?>


Но если я не ошибаюсь это напряжно для сервера будет. открывать файлы постояно. както можна обмануть по другому?
(Добавление)
Только посетила мысль. Если замутить типа каких то ссылок как ярлыки или ещё чото в таком роде? Или мож через мод реврайт как-то? Общем помогите пожалуйста.
 
 Top
molchun201
Отправлено: 16 Апреля, 2011 - 09:32:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 295
Дата рег-ции: Февр. 2011  
Откуда: Менеск


Помог: 5 раз(а)






-----
Обрамляйте код тегами и читайте
 
 Top
Fobius
Отправлено: 16 Апреля, 2011 - 10:24:10
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Нояб. 2009  


Помог: 1 раз(а)




Опишите цель этих дейтвий? Вам нужно каждому пользователю отдавать файл под разным именем?
Какая полная задача в этом?
 
 Top
Мелкий Супермодератор
Отправлено: 16 Апреля, 2011 - 12:04:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LifePlay пишет:
Как поменять Имя файла при загрузке?

header("Content-Disposition: attachment; filename=любое_имя_файла");
Заявленное имя может быть совсем любое, никакой зависимости от реальных файлов нет.

LifePlay пишет:
Но если я не ошибаюсь это напряжно для сервера будет. открывать файлы постояно. както можна обмануть по другому?

В любом случае будет открывать. И, нет, не напряжно, это обычный метод для отдачи юзеру файла.


-----
PostgreSQL DBA
 
 Top
LifePlay
Отправлено: 16 Апреля, 2011 - 15:57:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Авг. 2010  
Откуда: Кобеляки, Украина


Помог: 0 раз(а)




Fobius пишет:
Опишите цель этих дейтвий? Вам нужно каждому пользователю отдавать файл под разным именем?
Какая полная задача в этом?
Надо к именам файлам приделать название сайта.

Мелкий пишет:
header("Content-Disposition: attachment; filename=любое_имя_файла");
Заявленное имя может быть совсем любое, никакой зависимости от реальных файлов нет.


Делаю так
header("Content-Disposition: attachment; filename=work1.doc");
header('Location: http://' . $_SERVER['HTTP_HOST'] . $dir . '/' . str_replace('%2F', '/', rawurlencode($d)), TRUE, 301);

Результата нет. Не понял
(Добавление)
Сделал вот так

PHP:
скопировать код в буфер обмена
  1. $file = $_SERVER["DOCUMENT_ROOT"] . $dir . '/' . $d;
  2. $pathinfo = pathinfo($file);
  3. $name = 'site.ru_'.$pathinfo['basename'];
  4. header('Content-Disposition: attachment; filename='.$name);
  5. $x = fread(fopen("$file", "rb"), filesize("$file"));
  6. print $x;


Но вместо желаемого файла мне выдаёт тотже файл токо формат htm ничо не пойму
 
 Top
Мелкий Супермодератор
Отправлено: 16 Апреля, 2011 - 23:26:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LifePlay пишет:
Но вместо желаемого файла мне выдаёт тотже файл токо формат htm

А все остальные заголовки кто отсылать будет? Одного Content-Disposition для многих браузеров мало.


-----
PostgreSQL DBA
 
 Top
LifePlay
Отправлено: 17 Апреля, 2011 - 01:35:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 135
Дата рег-ции: Авг. 2010  
Откуда: Кобеляки, Украина


Помог: 0 раз(а)




Мелкий пишет:
А все остальные заголовки кто отсылать будет? Одного Content-Disposition для многих браузеров мало.
я отправил пустой заголовок и начало работать.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB