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
Форумы портала PHP.SU :: Версия для печати :: Загрузка файла по ссылке
Форумы портала PHP.SU » » HTTP и PHP » Загрузка файла по ссылке

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

1. PATCH - 10 Мая, 2011 - 17:48:31 - перейти к сообщению
собствено дело такое как можно реализовать закачку файла по ссылке
т.е допустим как Довлоад мастер указал ссылку прямую, он скачал.

CODE (html):
скопировать код в буфер обмена
  1. <form action="2.php" method="POST">
  2. <input name="file" type="text">
  3. <input type=submit value=Загрузить></form>

форма есть, но как дальше немного не допонимаю

PHP:
скопировать код в буфер обмена
  1.  
  2. $_POST['file'] = $_FILES['file'];
  3. $uploaddir = 'files/';
  4. if(copy($_FILES['file'] , $uploadfile))
  5. {
  6. echo "<h3>Файл успешно загружен на сервер</h3>";
  7. }
  8. else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }


и как можно получить информацию об загружаемом файле по ссылке? типо размер , расширение, Mime types.

если это конечно все возможно на php
2. EuGen - 10 Мая, 2011 - 17:49:54 - перейти к сообщению
Как минимум:
<form action=2.php method=post enctype=multipart/form-data>
По поводу информации - сделайте var_dump($_FILES);
3. PATCH - 10 Мая, 2011 - 17:55:41 - перейти к сообщению
var_dump($_FILES) = NULL т.е пустой вот я поэтому и не пойму как по ссылке можно скачать файл) и бо он файла не видет
4. EuGen - 10 Мая, 2011 - 17:56:40 - перейти к сообщению
Ах да
<input name="file" type="file">
5. PATCH - 10 Мая, 2011 - 18:01:36 - перейти к сообщению
если б было все так просто) мне надо делать закачку не с локального компьютера а с удаленого) т.е кидаеш прямую ссылку а он качает) а если тип file то ссылку вставить нельзя) только через кнопку обзор)
6. Мелкий - 10 Мая, 2011 - 19:08:39 - перейти к сообщению
PATCH пишет:
типо размер

filesize + гуглите костыли, если файл > 2гб

PATCH пишет:
расширение

http://php.su/functions/?page=cat_string

PATCH пишет:
Mime types.

mime_content_type (устаревшая) и http://ru.php.net/manual/en/ref.fileinfo.php

Ну и само собой, $_FILES пуст, если не пришло файлов. Ссылка - строка. Кормите её курлу/сокетам/file_get_contents, если последний разрешён хостером.
В случае курла или сокетов некоторые дополнительные данные (размер, mime-тип) может передать другая сторона, но полагаться на это не тоит.
7. PATCH - 10 Мая, 2011 - 19:40:51 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <form action='2.php' method=post enctype=multipart/form-data>
  2. <input name="uploadfile" type="text">
  3. <input type=submit value=Загрузить></form>

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $_POST['uploadfile'] = $_FILES['uploadfile'];
  3. $uploaddir = 'uploads/';
  4. $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
  5.  
  6. if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
  7. {
  8. echo "<h3>Файл успешно загружен на сервер</h3>";
  9. }
  10. else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
  11. ?>



CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  Ссылка - строка. Кормите её курлу/сокетам/file_get_contents, если последний разрешён хостером.
  3. В случае курла или сокетов некоторые дополнительные данные (размер, mime-тип) может передать другая сторона, но полагаться на это не тоит.
- вот этого я не много не понел)

P.S да $_FILES пуст ток серавно не понімаю почему и бо я пытаюсь загрузить как и с локального сервера картинку весом пару кб) так и с инета пробовал одно и тоже , файл пустой
8. demot - 10 Мая, 2011 - 20:48:27 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file="http://domain.ru/file.xml";
  3. $aheaders=@get_headers($file);
  4. if( !preg_match("|200|", $aheaders[0]) ) {
  5.     print("File does not exists..");
  6. } else {
  7.     $ffout=fopen(substr($file,strrpos($file,"/")+1),"w");
  8.     fwrite($ffout,file_get_contents($file));
  9.     fclose($ffout);
  10. }
  11. ?>

В массиве $aheaders будет нечто вроде:
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [0] => HTTP/1.1 200 OK
  3.     [1] => Date: Tue, 10 May 2011 17:42:48 GMT
  4.     [2] => Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
  5.     [3] => Last-Modified: Wed, 04 May 2011 08:59:56 GMT
  6.     [4] => ETag: "11e09-8f09-7b12bd9b"
  7.     [5] => Accept-Ranges: bytes
  8.     [6] => Content-Length: 36617
  9.     [7] => Connection: close
  10.     [8] => Content-Type: application/xml
  11. )

Т.е. как можно видеть присутствует и размер файла в байтах (Content-Length) и его тип (Content-Type).

Ну а в переменную $file посредством <input type="text"> подставляй нужную ссылку.
9. Мелкий - 10 Мая, 2011 - 20:52:44 - перейти к сообщению
PATCH пишет:
вот этого я не много не понел)

PATCH пишет:
т.е кидаеш прямую ссылку а он качает)

Ссылка - всегда строка. Файлом она не может быть по определению, максимум - ссылка на файл.
А строки в $_FILES не попадают, туда попадают загруженные с формы файлы. И только они.
10. PATCH - 10 Мая, 2011 - 21:43:00 - перейти к сообщению
спасибо всем за разъяснение )
11. Crazy_maker - 11 Мая, 2011 - 11:34:29 - перейти к сообщению
Господа всех приветствую.
Разъясните пожалуйста почему скрипт не качает файлы более 2 мб? И как можно увеличить размер загружаемого файла хотя бы до 100мб?
Скрипт самый простейший.
<FORM ENCTYPE="multipart/form-data" ACTION="step.php" METHOD=POST>
Ваш пароль:<br> <INPUT NAME="pass" TYPE="password"><br>
Закачать файл:<br><INPUT NAME="zak" TYPE="file"><br>
<INPUT TYPE="submit" VALUE="Закачать">
</FORM>


а вот и сам исполнитель

<?php
if(copy($_FILES["zak"]["tmp_name"],"uzer/".basename($_FILES["zak"]["name"]))):
Print "Файл загружен";
else:
Print"Обломись";
endif;
?>


Все файлы до 2 мб качаются без проблем, но при попытке загрузить больше выдает "Обломись". Почему?
12. Мелкий - 11 Мая, 2011 - 11:51:25 - перейти к сообщению
phpfaq.ru/debug

смотрите настройки в php.ini post_max_size и upload_max_filesize
13. Crazy_maker - 11 Мая, 2011 - 13:05:16 - перейти к сообщению
И всего-то??? Блеск!!
Проблема была в upload.
Спасибо огромное всем, кто отвечает на вопросы и особая благодарность создателям этого проекта. Это инструмент номер один при изучении сайтостроения и создании сайтов.
Всем спасибо.

 

Powered by ExBB FM 1.0 RC1