Webmaster общности: Predpriemach.com | SearchEngines.bg

    Upload с описание към файла

    Автор: Galli

    В този урок ще ви предложа примерен код за upload на файлове с възможност за описание към файловете.
    Ще използвам за съхраняване на информацията MySQL база данни. Ето структората на базата данни – за име на базата данни съм използвал files, а за име на таблицата също files.

    CREATE TABLE `files` (
    `id` int(11) NOT NULL auto_increment,
    `url` varchar(255) NOT NULL,
    `opisanie` varchar(255) NOT NULL,
    `ime` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

    ВНИМАНИЕ! За да може да се пише описанието на файла на български направете колацията на базата данни на cp1251_general_ci. Също така файловете, в които е кодът трябва да са с кодировка ANSI.
    ВНИМАНИЕ! Трябва да си направите папка files.
    Сега ви предлагам кода, чрез който се upload-ват файловете. Може да го запишете във файл upload.php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Upload на файлове</title>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    </head>
    <body>
    <center>
    <?php
    if(isset($_POST['submit'])){
    ///////////////////Връзка с база данни////////////////////
    mysql_connect("localhost","root","****");
    mysql_select_db("files");
    mysql_query("SET CHARACTER SET cp1251");
    ///////////////////Край на връзка с база данни////////////////////
    ///////////////////Променливи от формата//////////////////////
    $ime=htmlspecialchars($_POST['ime']);
    $opisanie=htmlspecialchars($_POST['opisanie']);
    $file=$_FILES['file']['name'];//име на файла
    $tmp_file=$_FILES['file']['tmp_name'];//пътя до временното място на файла
    $size=$_FILES['file']['size'];//големина на файла
    //Тук може да се добавят още
    ///////////////////Край на променливи от формата//////////////////////
    $upload_path="files/".basename($file);//Път до качения файл
    if(file_exists($upload_path)){//Проверка дали файлът вече съществува
    echo "Файлът вече съществува";
    exit;
    }
    if(empty($ime) or empty($opisanie)){//Проверка за празни полета
    echo "Празни полета";
    exit;
    }
    if($size==0){//Ако файлът е с размер 0 няма смисъл да го качваме
    echo "Файлът е повреден";
    exit;
    }
    if($size>9999999999){//Проверка за размер на файла
    echo "Файлът е твърде голям";
    exit;
    }
    ////////////////////////Проверка за разширение на файла/////////////////////////////
    $extensions = array("jpg","mp3","txt","zip");//позволени типове
    $extension_file = end(explode(".",$file));
    $extension_file = strtolower($extension_file);
    if(!in_array($extension_file,$extensions)){
    echo "Непозволен тип файл";
    exit;
    }
    ///////////////////////Край на проверка за разширение на файла/////////////////////////////
    $site_url="http://www.demo.md-place.info/";
    $upload=move_uploaded_file($tmp_file,$upload_path);
    if($upload){
    $q=mysql_query("INSERT INTO `files` (`ime`,`opisanie`,`url`) VALUES ('$ime','$opisanie','$site_url$upload_path')");
    if($q){
    echo "Файлът беше успешно качен";
    }else{
    echo "Грешка</center>";
    exit;
    }
    }
    }else{
    ?>
    <!--форма за upload-->
    <form action="" method="post" enctype = "multipart/form-data">
    Име
    <br>
    <input name="ime" type="text">
    <br>
    Описание
    <br>
    <textarea name="opisanie" cols="50" rows="20"></textarea>
    <br>
    <!--Тук може да се добавят още полета input или textarea-->
    Файл
    <br>
    <input name="file" type="file">
    <br>
    <input name="submit" type="submit">
    </form>
    <?php
    }
    ?>
    </center>
    </body>
    </html>

    Този код ще upload-ва файла в папка files. В този код трябва да промените стойността на тази променлива $site_url. На мястото на http://www.demo.md-place.info/ трябва да напишете URL-a на вашия сайт до папката files (без нея) като той трябва да завършва с /
    Сега ще ви предложа примерен код за извеждане на файловете с информацията за тях. За този код съм използвал страницирането на admin от тук.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Upload на файлове</title>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    </head>
    <body>
    <center>
    <?php
    ///////////////////Връзка с база данни////////////////////
    mysql_connect("localhost","root","****");
    mysql_select_db("files");
    mysql_query("SET CHARACTER SET cp1251");
    ///////////////////Край на връзка с база данни////////////////////
    $broinastranica = 10;//колко броя да изкарва на страница
    $pageNum = 1;
    if(isset($_GET['page']))
    {
    $pageNum = $_GET['page'];
    }
    $redove = ($pageNum - 1) * $broinastranica;
    $query = " SELECT id,ime,url FROM files LIMIT $redove, $broinastranica";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result))
    {
    echo "Име: <a href=\"opisanie.php?id=".$row['id']."\">".$row['ime']."</a><br>Линк: <a href=\"".$row['url']."\">".$row['url']."</a><br><br>";
    }
    $query = "SELECT COUNT(id) AS broi FROM files";
    $result = mysql_query($query);
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    $numrows = $row['broi'];
    $maxPage = ceil($numrows/$broinastranica);
    $self = $_SERVER['PHP_SELF'];
    $nomeranastranici = '';
    for($page = 1; $page <= $maxPage; $page++)
    {
    if ($page == $pageNum)
    {
    $nomeranastranici .= " $page ";
    }
    else
    {
    $nomeranastranici .= " <a href=\"$self?page=$page\">$page</a> ";
    }
    }
    if ($pageNum > 1)
    {
    $page = $pageNum - 1;
    $predishna = " <a href=\"$self?page=$page\"> [<<<<<] </a> ";
    $parva = " <a href=\"$self?page=1\">[първа]</a> ";
    }
    else
    {
    $predishna = ' ';
    $parva = ' ';
    }
    if ($pageNum < $maxPage)
    {
    $page = $pageNum + 1;
    $sledvashta = " <a href=\"$self?page=$page\"> [>>>>>] </a> ";
    $posledna = " <a href=\"$self?page=$maxPage\">[последна]</a> ";
    }
    else
    {
    $sledvashta = ' ';
    $posledna = ' ';
    }
    echo "<br><br>".$parva . $predishna . $nomeranastranici . $sledvashta . $posledna;
    ?>
    </center>
    </body>
    </html>

    Този код извежда всички записи от базата данни като показва по 10 на страница с линк към страница opisanie.php, където се показва описанието към файла.
    Сега и кодът на opisanie.php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Upload на файлове</title>
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">
    </head>
    <body>
    <center>
    <?php
    if(isset($_GET['id'])){//Кодът надолу ще се изпълнява само ако е посочено id
    if(preg_match("/^[0-9]+$/", $_GET['id'])){//Кодът надолу ще се изпълнява ако id е цяло число
    ///////////////////Връзка с база данни////////////////////
    mysql_connect("localhost","root","****");
    mysql_select_db("files");
    mysql_query("SET CHARACTER SET cp1251");
    ///////////////////Край на връзка с база данни////////////////////
    $q=mysql_query("SELECT ime,opisanie,url FROM files WHERE id='".$_GET['id']."'");
    $r=mysql_fetch_array($q);
    echo $r['ime'];
    echo "<br><br>";
    echo $r['opisanie'];
    echo "<br><br>";
    echo "<a href=\"".$r['url']."\">".$r['url']."</a>";
    }else{
    echo "Грешка!";
    }
    }else{
    echo "Грешка, изберете файл!";
    }
    ?>
    </center>
    </body>
    </html>
    

    Този код ще ви покаже името, описанието на файла и линк към него.
    ВНИМАНИЕ! От настройката на PHP зависи какъв ще е максималният размер на файла за upload. Може да пробвате да настроите тази стойност с .htaccess файл като напишете в него следните редове:

    php_value post_max_size 50M
    php_value upload_max_filesize 50M

    като 50M означава 50MB, но това може да не работи на даден хостинг.

    Този урок е написан специално за web-tourist.net. Забранявам копирането и публикуването му в друг сайт!

    Оставете коментар