1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

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

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

Наш партнер Genesis Hackspace
  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";
    }
     
Загрузка...

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