перемещение загруженных файлов в денвере

Discussion in 'PHP' started by yesman, 6 Feb 2013.

  1. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Необходимо переместить загруженные файлы, при выполнении нижележащего кода возникает ошибка, т.к. происходит попытка перемещения по адресу http://opros.ru/imagesZ:\tmp\phpA04.tmp. При указании адреса типа
    C:\\webservers\images\home\opros.ru\www\images возникает подобная ошибка. Как переместить файлы в нужную директорию?

    if(isset($_POST['create']))
    {
    $directory="http://opros.ru/images";
    $id=uniqid(mt_rand(0,100000000));
    if((is_uploaded_file($_FILES['image1']['tmp_name']))&&(is_uploaded_file($_FILES['image2']['tmp_name'])))
    {
    if(!((move_uploaded_file($_FILES['image1']['tmp_name'],$directory.$_FILES['image1']['tmp_name']))&&(move_uploaded_file($_FILES['image2']['tmp_name'],$directory.$_FILES['image1']['tmp_name'])))) exit("Ошибка при загрузке файлов");
    }
    }
     
  2. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    а какая ошибка ? скорее всего прав доступа на запись в директорию указанную во втором аргументе move_uploaded_files нет.
     
  3. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Warning: move_uploaded_file(Z:\home\opros.ru\wwwZ:\tmp\php94C0.tmp) [function.move-uploaded-file]: failed to open stream: Invalid argument in Z:\home\opros.ru\www\new.php on line 12
     
  4. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    129
    Likes Received:
    33
    Reputations:
    8
    move_uploaded_file -должна принимать существующий путь.
     
  5. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    путь и является существующим. как я понимаю, тут ошибка в том, что этот путь не так задано, а как именно он должен задаваться, я не могу понять
     
  6. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    посмотри примеры
    http://php.net/manual/ru/function.move-uploaded-file.php
     
  7. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    уже смотрел. дело в том, что там задается относительный путь, а мне надо абсолютный, т.к. временное хранилище и постоянное находятся на разных дисках
     
  8. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    129
    Likes Received:
    33
    Reputations:
    8
    Тогда нужно строить путь относительно того что выдаёт функция:
    Code:
    $realpath=realpath('.');
     
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    yesman Не пробовали смотреть в собственный код?

    1) Вы ставите префиксом (переменная $directory) URL, а не локальный путь, а заливать с помощью HTTP и move_uploaded_file - нельзя
    2) Ключ tmp_name - содержит полный абсолютный путь до временного файла, если вам нужно получить имя передаваемого файла - это ключ name
    3) Заливать файлы и полагаться на передаваемое имя - нельзя (с точки зрения безопасности). В вашем (скорее всего не вашем) коде есть переменная $id содержащее "случайное" имя, видимо нужно использовать его
    4) Имя на самом деле не случайное и опять-таки с точки зрения безопасности - лучше не использовать mt_rand и uniqid
     
    _________________________
  10. yesman

    yesman New Member

    Joined:
    15 Oct 2011
    Messages:
    24
    Likes Received:
    0
    Reputations:
    0
    Да, ошибка была связана с tmp_name. Разобрался чуть раньше чем вы это написали, но все равно спасибо. Остальное тоже учту