За последние 24 часа нас посетил 36561 программист и 1718 роботов. Сейчас ищут 864 программиста ...

Загрузка файла+ссылка

Тема в разделе "PHP для новичков", создана пользователем Roman82, 19 дек 2008.

  1. Roman82

    Roman82 Активный пользователь

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    Здравствуйте!
    Подскажите, как загрузить файл на сервер и что бы ссылка на этот файл автоматически создавалась на какой либо странице?
    Понимаю, что тема много раз затрагивалась, но сколько не смотрел так и не смог найти ответа. Если кто может объясните подробней, я все таки не так владею программированием как хотелось бы. Заранее спасибо!

    PS: не отправляйте в google (покрайне мере сразу) или еще куда, я там очень много просмотрел, но описана только сама загрузка файла на сервер, но вот про автоматическое создание ссылок нет ничего.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    начнем с малого.

    объясни что ты хочешь, на пальцах, что б дурак понял, а не ищи решени, а там посмотрим...
     
  3. Roman82

    Roman82 Активный пользователь

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    объясняю.
    есть, к примеру, страница с которой нужно загрузить файл (пусть это будет "админ зона", и есть другая страница (например "загрузки"), где находятся ссылки для скачки (прямо с сайта, не через объменники), как автоматизировать загрузку файлов: загружаешь файл на сайт, а на странице загрузки автоматом создается ссылка на загруженный файл?
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Хранить список ссылок в текстовом файле. Страница ссылок берет ссылки из текстового файла. При загрузке нового файла на сайт дописывать ссылку в текстовый файл.
     
  5. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    [vs], тогда лучше бд - меньше геморроя :)
     
  6. Roman82

    Roman82 Активный пользователь

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    с бд, это типа при загрузке файла ссылка записывается в бд, так? а потом из базы список ссылок выдодится на страницу?
    тогда как сделать так чтобы ссылка создавалась автоматически при загрузке файла? что бы тот кто загружал файл не парился по поводу ссылки?
     
  7. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    PHP:
    1. <?php
    2. $sql = "SELECT * FROM downloads";
    3. $result = mysql_query($sql);
    4. while ($row = mysql_fetch_assoc($result)) {
    5.  
    6.     echo "<a href='{$row['url']}'>{$row['title']}</a><br>";
    7. }
    8.  
     
  8. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Надо просто разделить задачу на пункты:
    1. Загрузка файла.
    2. Запись информации о файле куда-либо (в бд, файл или еще куда - не важно).
    3. При генерации страницы со ссылками извлекать информацию о файлах и генерировать ссылки.

    При реализации пункта два нужно будет подумать о том, что какая информация о файле требуется для реализации пункта два. Поэтому, возможно, будет проще поменять эти пункты местами.
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    помню когда когда начинал не хватало примеров

    правдо чёта сложновато вышло...
    PHP:
    1. <?
    2. $file_dir="downloads";     // папка куда загружаем
    3. $data_file="base";     // файл - база с файлами
    4. $badfiles=array("php","swf");   // не загружаем такие файлы
    5. $maxsize=500; // КБ
    6.  
    7.  
    8. function latinconvert($fn) { // преобразует кирилицу в латиницу
    9.     $fn=strtolower($fn);
    10.     $rus="а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я";
    11.     $eng="a,b,v,g,d,e,e,zh,p,i,i,k,l,m,n,o,p,r,s,t,y,f,x,c,ch,sh,sh,bI,e,u,ya";
    12.     $rus=explode(",",$rus);
    13.     $eng=explode(',',$eng);
    14.     $fn=str_replace(" ","_",$fn);
    15.     $fn=preg_replace("#[^\w\s_\-\.]+#i","",$fn);
    16.     $fn=str_replace($rus,$eng,$fn);
    17.     return $fn;
    18. }
    19. function serial($data,$name) {             // сохраняет массив в файл
    20.     $data="<?die();?>".serialize($data);
    21.     file_put_contents($name.".php",$data);
    22. }
    23. function unserial($name){    // получает массив из файла
    24.     $res=array();
    25.     $fp=@file_get_contents($name.".php");
    26.     if($fp)
    27.         $res=unserialize(str_replace("<?die();?>","",$fp));
    28.     return $res;
    29. }
    30. $act=!empty($_GET['act'])?$_GET['act']:"download";
    31. switch($act) {
    32.    case "download":
    33.         if(isset($_FILES['file'])){
    34.             if(!empty($_FILES['file']['tmp_name'])) {
    35.                $filename=$_FILES['file']['name'];
    36.                $tmp=$_FILES['file']['tmp_name'];
    37.                if(filesize($tmp)<=$maxsize*1024) {  // смотрим размер файла
    38.                   $exp=preg_replace("#(.+)\.#","",strtolower($filename)); // получаем расширение файла
    39.                   if(!in_array($exp,$badfiles)) {  // проверяем есть ли такой тип файлов с списке нехороших типов
    40.                       $filename=latinconvert(str_replace($exp,"",$filename)).$exp;  // преобразуем имя файла
    41.                       if(@move_uploaded_file($tmp,$file_dir."/".$filename)){  // загружаем
    42.                          $files=unserial($data_file);
    43.                          $files[]=$filename;
    44.                          serial($files,$data_file);
    45.                          header("Refresh:2;url={$_SERVER['PHP_SELF']}?act=filelist");
    46.                          print "File($filename) was Downloaded";
    47.                       }else{
    48.                         print "Error: Cannot upload file";
    49.                       }
    50.                   }else {
    51.                     print "Error: FileType($exp) is not supported";
    52.                   }
    53.                }else {
    54.                   print "Error: FileSize limit $maxsize.kb.";
    55.                }
    56.             }else {
    57.                print "Error: Enter file for download";
    58.             }
    59.         }
    60.         print "<br>
    61.           <form method=POST enctype=\"multipart/form-data\" >
    62.             <input type=file name='file'>
    63.             <input type=submit value='Download'>
    64.           </form>
    65.           <a href='{$_SERVER['PHP_SELF']}?act=filelist'>[File List]</a>
    66.        ";
    67.    break;
    68.    case "filelist":
    69.       $files=unserial($data_file);
    70.       if($files) {
    71.           for($i=0,$c=count($files);$i<$c;$i++){
    72.                print "<a href='/$file_dir/{$files[$i]}'>{$files[$i]}</a>";
    73.                if(!file_exists($file_dir."/".$files[$i]))
    74.                    print " (File NotFound)";
    75.                print "<br>";
    76.           }
    77.       }else{
    78.           print "Error: FileList is empty";
    79.       }
    80.       print "<br><a href='{$_SERVER['PHP_SELF']}?act=download'>[DownLoad File]</a>";
    81.    break;
    82. }
    83. ?>
     
  10. Roman82

    Roman82 Активный пользователь

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    спасибо за примеры, некоторые вопросы, после примеров, отпали сами собой (это к примеру о замене кирилицы на латиницу).
    PS: даже кое что начинаю понимать :), буду пробовать, но если не сложно, напишите пример когда не важен размер файла, его расширение и т.д и т.п., а важна только ссылка, которая записывается в бд.
     
  11. kostyl

    kostyl Guest

    Думаю, это уже можно и самому сделать.
     
  12. Roman82

    Roman82 Активный пользователь

    С нами с:
    26 ноя 2008
    Сообщения:
    101
    Симпатии:
    0
    Согласен. Буду пробовать. Спасибо всем за помощь.