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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Загрузка файлов на сервер по ссылке
 
 автор: buka   (25.05.2007 в 22:44)   письмо автору
 
 

Привет всем, вот такой у меня вопрос

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

Заранее спасибо

   
 
 автор: Trianon   (25.05.2007 в 22:48)   письмо автору
 
   для: buka   (25.05.2007 в 22:44)
 

изображения придется затягивать... кодом . в лучшем случае fopen или curl . В худшем - сокетами или file_get_contents.

   
 
 автор: buka   (26.05.2007 в 09:06)   письмо автору
 
   для: Trianon   (25.05.2007 в 22:48)
 

А можно хоть один пример простенький

   
 
 автор: Unkind   (26.05.2007 в 09:52)   письмо автору
 
   для: buka   (26.05.2007 в 09:06)
 


<?php
$fh 
fopen("http://host.com/picture.jpg""rb");
$buffer "";
while(!
feof($fh) && strlen($buffer) < 1024 1024$buffer .= fread($fh1024);

    if(!
feof($fh))
    {
    echo(
"Файл не загружен до конца, так 
как его размер превышает мегабайт."
);
    }
    else
    {
        
$fd fopen("picture.jpg""wb");
        
fwrite($fd$buffer);
        
fclose($fd);
    }

fclose($fh);
?>

   
 
 автор: Trianon   (26.05.2007 в 16:01)   письмо автору
 
   для: Unkind   (26.05.2007 в 09:52)
 

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

   
 
 автор: Unkind   (26.05.2007 в 16:25)   письмо автору
 
   для: Trianon   (26.05.2007 в 16:01)
 


<?php 
$fh 
fopen("http://host.com/picture.jpg""rb") or die("Ошибка при загрузке"); 
$fd fopen("picture.jpg""wb"); 
while(!
feof($fh) && ftell($fh) < 1024 1024fwrite($fdfread($fh1024)); 
fclose($fd);

    if(!
feof($fh)) 
    { 
    echo(
"Файл не загружен до конца, так как его размер превышает мегабайт.");
    
unlink("picture.jpg");
    } 
    else 
    { 
    echo(
"Файл успешно загружен.");
    }

fclose($fh); 
?>

   
 
 автор: Trianon   (26.05.2007 в 21:53)   письмо автору
 
   для: Unkind   (26.05.2007 в 16:25)
 

Куда лучше :)
Пожалуй, только пара замечаний.
unlink к файлу, который открыт, вероятно будет отвергнут.
Впрочем, тут многое зависит и от ОС и от файловой системы.
blocking-factor в 1024 байта по современным меркам мелковат. В большинстве случаев екстент (кластер) распределения файлового пространства не падает ниже 4К. 8K-64K - оптимальный размер.
Вместо ftell предпочтительно считать размер самостоятельно.
Иногда реализции ftell могут изрядно замедлять файловые операции.

   
 
 автор: Unkind   (26.05.2007 в 21:55)   письмо автору
 
   для: Trianon   (26.05.2007 в 21:53)
 

unlink к файлу, который открыт, вероятно будет отвергнут.
Он закрыт.

   
 
 автор: Trianon   (27.05.2007 в 01:08)   письмо автору
 
   для: Unkind   (26.05.2007 в 21:55)
 

Да. :) это я проморгал

   
Rambler's Top100
вверх

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