Загрузка файла не сервер

Тема в разделе "PHP программирование", создана пользователем tilekus, 31 май 2009.

  1. tilekus

    tilekus Гость

    Нужно загрузить файл на сервер. Но переименовать его, например текущей датой, чтобы названия всех файлов были уникальными. Я заранее не знаю какой тип фалов будет загружаться, т.е. я не могу сказать что пользователи будут закачивать только вордовские файлы или рисунки.
    Сам принцип организации закачки файла я знаю. Но вот как пееименовть :)
    Вот сама форма для закачки
    Код (Text):
    <form action="uploader.php" method="post" enctype="multipart/form-data">
    <input type="file" name="filename"><br>
    <input type="text" name="nazvanie"><br>
    <input type="submit" value="Загрузить"><br>
    </form>
    А это обрабатывающий скрипт
    Код (Text):
    <?php
    if(copy($_FILES["filename"]["tmp_name"], "../uploads/".$_FILES["filename"]["name"]))
    {
    echo("Файл успешно загружен <br>");
    } else {
    echo("Ошибка загрузки файла");
    }
    ?>
    Подскажите что мне нужно переделать.
     
  2. nws

    nws Гость

    Во-первых делай проверку на тип файла (doc, xls, image и т.д.) иначе залбьют тебе шелл и положат твой сайт

    Вот пример кода:



    Код (PHP):
    function image_valid($type)
    {
    $file_types = array('image/pjpeg' => 'jpg', 'image/jpeg' => 'jpg', 'image/jpeg' =>
    'jpeg', 'image/gif' => 'gif', 'image/X-PNG' => 'png', 'image/PNG' => 'png',
    'image/png' => 'png', 'image/x-png' => 'png', 'image/JPG' => 'jpg', 'image/GIF' =>
    'gif', 'image/bmp' => 'bmp', 'image/bmp' => 'BMP', );
    if (!array_key_exists($type, $file_types))
    {
    return false;
    }
    else
    {
    return true;
    }
    }


    function upload()
    {

    $image_upload_error = '';
    //$data - to 4to iz $_POST'a prihodit
    if ($data)
    {
    $upload_dir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
    $image_name = $_FILES['data']['name']['Product']['image'];
    $tmp_image_name = $_FILES['data']['tmp_name']['Product']['image'];
    //$new_image_name - imea faila na servere budet image1_31564165415616.jpg
    $new_image_name = $image_name.'_'.time();
    $image_type = $_FILES['data']['type']['Product']['image'];

    if ($image_valid($image_type))
    {
    if (move_uploaded_file($tmp_name, $upload_dir.$new_image_name))
    {
    $image_upload_error = 'Картинка загружена';
    }
    else
    {
    $image_upload_error = 'Картинка не загружена';
    }
    }
    else
    {
    $image_upload_error = 'Загружаемый файл не является изображением';
    }
    }
    }
     
  3. Anonimous

    Anonimous Well-Known Member

    Регистрация:
    15 июн 2012
    Сообщения:
    120
    Симпатии:
    0
  4. bracomp

    bracomp New Member

    Регистрация:
    30 окт 2009
    Сообщения:
    2
    Симпатии:
    0
    $bra="bra"; // prefix
    $dir="./files/"; // каталог, куда закачиваем
    if ($_FILES['filename']['name'])
    { $file=$_FILES['filename']['tmp_name'];
    $type=$_FILES['filename']['name'];
    $p=strrpos($type,".");
    $type=substr($type,$p+1);
    $tmpfname = tempnam($dir, "$bra");
    $tmpfname=str_replace("\\",'/',$tmpfname);
    unlink($tmpfname);
    $p=strrpos($tmpfname,"/");
    $fname=substr($tmpfname,$p+1);
    $p=strrpos($fname,".");
    if($p>0) $fname=substr($fname,0,$p+1).$type; /// Windows
    else $fname.=".".$type; // Linux
    $FM=move_uploaded_file($_FILES['filename']['tmp_name'], $dir.$fname);
    if ($FM ) echo " Ok";
    else echo "Error upload";
    }
     
Загрузка...

Поделиться этой страницей