За последние 24 часа нас посетил 199341 программист и 2122 робота. Сейчас ищут 1778 программистов ...

как загрузить файл с др. диска

Тема в разделе "PHP для новичков", создана пользователем AlleeX, 17 июл 2009.

  1. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    Всем привет, ситуация такая:
    Сервак и сай крутится на диске С. На сайте создаю файлообменник, а все загружаемые файлы записываю на диск D в папку не пренадлежащую сайту - вот код:

    if (isset($title) && isset($date) && isset($text) && isset($author))
    {
    chdir("d:/files/$value/");
    if (mkdir("$file", 644)) echo "<p>Каталог успешно создан</p>";
    else echo "ошибка!!!!";
    $filep = "d:/files/$value/$file/";

    chdir("d:/files/$value/$file/");
    if (mkdir("$scr", 644)) echo "<p>Каталог для скриншота успешно создан</p>";
    else echo "ошибка!!!!";
    $scrp = "d:/files/$value/$file/$scr/";
    /* сдесь пишем что можно заносить в базу */
    $result = mysql_query("INSERT INTO files (post, file, date, description, author, addressfile, screenshot) VALUES ('$post', '$title', '$date', '$text', '$author', '$filep$file', '$scrp$scr' )");
    if ($result == 'true') {echo "<p> Ваша запись успешно добавлена!!!!</p>";}
    else {echo "<p> Ваша запись ен добавлена!!!!</p>";}
    }
    else
    {
    echo "<p> ЗАПОЛНИТЕ ВСЕ ПОЛЯ!!!!!!</p>";
    }

    if (copy($_FILES["file"]["tmp_name"], "$filep".$_FILES["file"]["name"]))
    {
    echo('<p>Файл успешно загружен</p>');
    }
    else
    {
    echo('<p>Ошибка загрузки файла</p>');
    }

    if (copy($_FILES["scr"]["tmp_name"], "$scrp".$_FILES["scr"]["name"]))
    {
    echo('<p>скриншот успешно загружен</p>');
    }
    else
    {
    echo('<p>Ошибка загрузки скриншота</p>');
    }

    Загружаются файлы и создаются папки нормально, ВОПРОС в том как теперь пользователю сайта дать правильно ссылку для скачивания файла, находящегося в этой папке????
     
  2. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    1. отдавать скриптом.
    2. в апаче прописать алиас на этот путь
     
  3. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    А можно по подробнее, а то новичек совсем :oops:
    ЗАРАНЕЕ БЛАГОДАРЕН!!!
     
  4. 440Hz

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

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

    PHP:
    1.  
    2. <?php
    3.  
    4. $filename = 'd:/aaa/bbb/ccc.txt';
    5.  
    6. readfile($filename);
    7.  
    8. ?>
    9.  
    2. апач.

    строчка из тандартного конфига апача
    Alias /icons/ "C:/Program Files/Apache Group/Apache2/icons/"


    думаю смысл понятен?
     
  5. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    читает то читает
    PHP:
    1. <?readfile($filename);?>
    Но получается что он просто открывает его (например архив) в нутри браузера в виде непонятной кодировки, а надо именно загрузить.
     
  6. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    выдать соответствующие хедеры на загрузку?
     
  7. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    Енто как, если не секрет???? :roll:
     
  8. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1.  
    2. <?php
    3.  
    4. $filename = 'c:/autoexec.bat';
    5.  
    6. if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
    7.     header('Content-Type: application/force-download');
    8. else
    9.     header('Content-Type: application/octet-stream');
    10. header('Content-Length: '.filesize ($filename));
    11. header('Content-disposition: attachment; filename="'.$filename.'"');
    12.  
    13. readfile($filename);
    14.  
    15. ?>
    16.  
     
  9. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    А как быть с картинкой, которая хранится там же, а ее надо вывести на экран (не в виде кода и не загружать) просто в виде картинки???
     
  10. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ
    На загрузку посылает, но если качаешь IE то архив при открытии почему то говорит что битый, opera - то же самое???
     
  11. 440Hz

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

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

    сопельки утереть или сам справишься?
     
  12. AlleeX

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

    С нами с:
    17 июл 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    РБ

    Прийдеться наверное утирать :wink:
     
  13. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    у нас утирка сопелек - платное занятие.
    причем очень дорогущее, так как процедура утирки дело нежное и опасное дабы не повредит ь маленький и неокрепший мозг утираемого.

    скажем от 1000$... примерно...