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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
MBmusic
Отправлено: 24 Марта, 2012 - 22:15:05
Post Id


Посетитель


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


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




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

$name = $_FILES['myfile']['name'];
$tmp_name = $_FILES['myfile']['tmp_name'];

$location = "avatars/$name";
move_uploaded_file($tmp_name, $location);

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

и размер загружаемого файла не должен превышать 12 мб......
 
 Top
etoYA
Отправлено: 24 Марта, 2012 - 23:30:44
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




PHP:
скопировать код в буфер обмена
  1. echo '<a href="'.$row['link'].'">link</a>';


И в чем проблема, если путь в базе?
MBmusic пишет:
и размер загружаемого файла не должен превышать 12 мб......

CODE (htmlphp):
скопировать код в буфер обмена
  1. <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="12000">
 
 Top
Okula
Отправлено: 25 Марта, 2012 - 00:53:34
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


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




etoYA пишет:
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="12000">

Это не очень хороший вариант. Лучше не ограничиваться только этой проверкой.
P.S. 12мб = 12288000байт, а не 12000
12000байт ~ 11.7кбайт
 
 Top
etoYA
Отправлено: 25 Марта, 2012 - 01:38:05
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




Okula, а я думал в кб))

Ну ведь есть же
, вполне хороший вариант
 
 Top
DelphinPRO
Отправлено: 25 Марта, 2012 - 01:56:25
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




нужно в php.ini ограничивать объемы

UPLOAD_MAX_FILESIZE = 12M
POST_MAX_SIZE = 12M


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
MBmusic
Отправлено: 25 Марта, 2012 - 16:54:30
Post Id


Посетитель


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


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




etoYA пишет:
PHP:
скопировать код в буфер обмена
  1. echo '<a href="'.$row['link'].'">link</a>';


И в чем проблема, если путь в базе?
MBmusic пишет:
и размер загружаемого файла не должен превышать 12 мб......

CODE (htmlphp):
скопировать код в буфер обмена
  1. <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="12000">


все работает но не совсем правильно, файлы уже скачивает, но например если загрузить картинку а потом ее пытатся скачать, то оно ее не скачивает а открывает в этом окне......а мне нужно что бы именно скачивало, не важно какой файл загружено и формат файла тоже не важен......
 
 Top
LIME
Отправлено: 25 Марта, 2012 - 17:02:56
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. header ( "Content-Type: application/octet-stream" );
  2. header ( "Accept-Ranges: bytes" );
  3. header ( "Content-Disposition: Attachment; filename=" . $fileName );
  4. header ( "Content-Length: " . $fileSize );
  5. echo file_get_contents($location);

(Добавление)
это обработчик которому передается идентификатор файла в бд(например id)
он получает его содержимое и выводит после заголовков
 
 Top
MBmusic
Отправлено: 25 Марта, 2012 - 17:24:56
Post Id


Посетитель


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


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




та у меня уже все работает, почти) но не совсем правильно, файлы уже скачивает, но например если загрузить картинку а потом ее пытатся скачать, то оно ее не скачивает а открывает в этом окне......а мне нужно что бы именно скачивало, не важно какой файл загружено и формат файла тоже не важен......
 
 Top
LIME
Отправлено: 25 Марта, 2012 - 17:28:49
Post Id


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


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


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




именно это решение и поможет любой тип скачивать а не открывать
там ведь может быть и документ хтмл
а просто ссылка его откроет
попробуйте еще раз вчитаться и поймете код я думаю
ссылка на файл примерно такая href="loader.php?id=тут_файл"
обработчик ищет путь к файлу по id и тд.
 
 Top
MBmusic
Отправлено: 25 Марта, 2012 - 17:45:59
Post Id


Посетитель


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


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




хорошо, дык вот то что вы выше описали а именно:

PHP:
скопировать код в буфер обмена
  1.  header ( "Content-Type: application/octet-stream" );
  2.     header ( "Accept-Ranges: bytes" );
  3.     header ( "Content-Disposition: Attachment; filename=" . $fileName );
  4.     header ( "Content-Length: " . $fileSize );
  5.     echo file_get_contents($location);


это типа обработчик по скачке файлов или загрузке на сервер? у меня при записи в базу делается вот что:

PHP:
скопировать код в буфер обмена
  1. $name = $_FILES['myfile']['name'];
  2. $tmp_name = $_FILES['myfile']['tmp_name'];


$location = "avatars/$name";
move_uploaded_file($tmp_name, $location);

а то что вы описали я не совсем понимаю его содержимое и куда его вписывать......


Отредактировано модератором: LIME, 25 Марта, 2012 - 18:08:39
 
 Top
DelphinPRO
Отправлено: 25 Марта, 2012 - 17:52:32
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




это обработчик - отдельный файл.
ссылки такого вида будут
<a href="download.php?id=image.jpg">Скачать</a>

(Отредактировано автором: 25 Марта, 2012 - 17:53:03)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
MBmusic
Отправлено: 25 Марта, 2012 - 18:09:02
Post Id


Посетитель


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


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




тупо нифига не монял......(

у меня обработчик вот что:

$name = $_FILES['myfile']['name'];
$tmp_name = $_FILES['myfile']['tmp_name'];

$location = "avatars/$name";
move_uploaded_file($tmp_name, $location);

вместо этого вписал то что вы предлагали, дык оно при сабмите предлагает скачать файл обработчика...) я не могу понять что вместо чего и куда писать......

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

echo '<a href="'.$row['file_location'].'">Скачать</a>';
 
 Top
LIME
Отправлено: 25 Марта, 2012 - 18:11:58
Post Id


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


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


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




это другой обработчик
для скачки
перечитайте еще раз посты
и мой код не полный
переменные там с говорящими названиями сами догадаетесь на что заменить
 
 Top
MBmusic
Отправлено: 25 Марта, 2012 - 18:19:52
Post Id


Посетитель


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


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




Content-Type: application/octet-stream - здесь указывается путь куда будет записан файл???
echo file_get_contents($location) - для чего это? что будет записано в переменную $location
 
 Top
DelphinPRO
Отправлено: 25 Марта, 2012 - 18:24:14
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




MBmusic пишет:
Content-Type: application/octet-stream - здесь указывается путь куда будет записан файл???

Это служебный заголовок для браузера, сообщает тип передаваемого контента.
MBmusic пишет:
echo file_get_contents($location) - для чего это? что будет записано в переменную $location

file_get_contents - читает файл с диска
echo отдает файл в браузер.
$location должен содержать имя скачиваемого файла.
имя скачиваемого файла передается через GET параметр в ссылке <a href="ddd.php?id=filename.jpg">
по-моему все разжевано до жидкой кашицы


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB