За последние 24 часа нас посетили 22886 программистов и 1723 робота. Сейчас ищут 1795 программистов ...

Скачивание файлов

Тема в разделе "Вопросы от блондинок", создана пользователем scandal, 2 янв 2008.

  1. scandal

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

    С нами с:
    2 янв 2008
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте!
    Подскажите, пожалуйста, как можно решить следующую задачу. Дайте ссылки на статьи и/или примеры. Знаю русский, английский.
    Задача. Создать функцию, которая на входе получает ссылку на файл, который надо скачать и скачивает его на локальный диск.
    При этом, в функцию передается:
    $Link - ссылка на скачиваемый файл
    $Dir_Name - куда записывать файл
    $File_Name - имя файла
    Функция должна правильно обрабатывать исключения, типа: сервер недоступен, скачать не удалось и т.п.
    Также она должна заменять в имени файла некорректные с точки зрения windows символы.
    Возвращать эта функция должна значение, обозначающее успешность или неуспешность операции загрузки файла.

    Заранее благодарен!
     
  2. Adil

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

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    эт типо что было? я че то не врубился...
    ладно так уж и быть дам тебе ссылки на статьи примеры, я сегодня добрый... вот лови парочку:
    www.google.com
    www.yandex.ru
    www.rambler.ru

    должно хватить... :p
     
  3. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    scandal
    Вот откопал скрипт, когда-то писал когда была похожая задача:
    PHP:
    1.  
    2. <?php
    3. /*
    4. Этот PHP-код закопирайчен! ;)
    5. */
    6. function get_file_name ($addr)
    7. {
    8.     $url = $addr;
    9.     $array_url = str_split($url);
    10.     $array_url = array_reverse($array_url);
    11.     $filen=array_search('/',$array_url);
    12.     for ($i=0;$i<$filen;$i++)
    13.     {
    14.         $filena .= $array_url[$i];
    15.     }
    16.      $filena = str_split($filena);
    17.      $filena = array_reverse($filena);
    18.      foreach ($filena as $filenam)
    19.      {
    20.         $filename .=$filenam;
    21.      }
    22.      return $filename;
    23.      return true;
    24. }
    25. function new_password ($password)
    26. {
    27.     $text = file_get_contents(".".$_SERVER['PHP_SELF']);
    28.     $text = str_replace('"'.mdp.'"','"'.md5($password).'"',$text);
    29.     file_put_contents(".".$_SERVER['PHP_SELF'],$text);
    30.     header ("Location: ".$_SERVER['PHP_SELF']);
    31. }
    32. define("mdp","1a1dc91c907325c69271ddf0c944bc72");
    33. if (isset($_POST['new_password']) && !empty($_POST['new_password']) && $_POST['new_password'] != mdp)
    34. {
    35.     new_password($_POST['new_password']);
    36.     exit;
    37. }
    38. if (isset($_POST['url']) && !empty($_POST['url']) && true == get_file_name($_POST['url']))
    39. {
    40.     $filename = get_file_name($_POST['url']);
    41.     if (file($_POST['url']) && file_put_contents("./files/$filename", file_get_contents($_POST['url'])))
    42.  {
    43.     $ok = "<font color=green>Файл <b>$filename</b> успешно сохранен!</font>";
    44.  }
    45.  else
    46.  {
    47.     $ok = "<font color=red>Ошибка!</font>";
    48.  }
    49. }
    50. else {
    51.     $ok = "Введите URL!";
    52.    
    53. }
    54. if (isset($_POST['password']))
    55. {
    56.     $_SESSION['password'] = md5($_POST['password']);
    57. }
    58. if (isset($_GET['exit']) && $_GET['exit'] == "yes") {
    59.     header('Location: '.$_SERVER['PHP_SELF']);
    60. }
    61. ?>
    62. <HTML version="4.0" lang="ru">
    63. <head>
    64. <title><?php if($_SESSION['password'] == mdp){print "Загрузка файлов на сервер";} else print "Вход";?></title>
    65. </head>
    66. <BODY>
    67. <?php
    68. if (!empty($_SESSION['password']) && $_SESSION['password'] == mdp)
    69. {
    70. ?>
    71. <form method="POST">
    72. URL: <input type="text" size="26" name="url">
    73. <input type="button" value="Закачать" onclick="this.value='Ждите...'; this.disabled=true; this.form.submit('<?php print $_SERVER['PHP_SELF']; ?>');" />
    74. </form>
    75. <li><dd><?php print $ok ?>
    76. <p />
    77. <hr>
    78. <form method="POST" action="<?php print $_SERVER['PHP_SELF']?>">
    79. Смена пароля: <input type="text" name="new_password">
    80. <input type="submit" value="OK!">
    81. </form>
    82. <a href="<?php print stripslashes($_SERVER['PHP_SELF'])?>?exit=yes">&nbsp;Выход&nbsp;</a>
    83. <?php }
    84. else {
    85.     ?>
    86.     <form method="POST" action="<?php print $_SERVER['PHP_SELF'];?>">
    87. Пароль: <input type="password" name="password">
    88. <input type="submit" value="Войти">
    89. </form>
    90. <?php
    91. }
    92. ?>
    93. </BODY>
    94. </HTML>
    95.  
    Пароль по-умолчанию pass.
    Скрипт скачивает файл в папку files (её нужно создать предварительно в той же папке, что в которой находится скрипт).
    Если файл удалось закачать - пишет, что успешно, иначе просто пишет что "ошибка". Ну вообщем, дорабатывай под свои нужды :)
     
  4. darrios

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

    С нами с:
    26 окт 2011
    Сообщения:
    17
    Симпатии:
    0
    У меня проблемка, не понятная!!!!
    Когда качаю mp3 файлы с помощью скрипта, все тэги файла проподают, а когда файл на сервере они есть...
    Что может их удалять при скачивании?

    Пробовал эти скрипты:
    http://webmastak.com/article.aspx?id=322
    http://shaman.asiadata.ru/node/217

    и еще это:
    PHP:
    1. header('HTTP/1.1 200 OK');
    2.     header('Connection: close');
    3.     header('Content-Type: application/octet-stream');
    4.     header('Accept-Ranges: bytes');
    5.     header('Content-Disposition: attachment; filename='.$filename);
    6.     header('Content-Length: '.$filesize);
    7.     readfile($path);