За последние 24 часа нас посетили 17967 программистов и 1650 роботов. Сейчас ищут 1180 программистов ...

Аналог хранения файлов в mysql

Тема в разделе "PHP и базы данных", создана пользователем dslychko, 24 апр 2008.

  1. dslychko

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

    С нами с:
    14 июн 2007
    Сообщения:
    144
    Симпатии:
    0
    Покурил что хранение файлов в mysql - дело не благодарное.
    Если пользоваться файловой системой сервера и закачивать файлы , то каким образом можно привязывать файл к строке таблицы mysql ?
    Имена файлов могут быть одинаковыми.
     
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    имена файлов на сервере - разные, по ид.
    в таблице имен файлов их ид, внешнее имя и что еще надо. В чем вопрос не понял.
     
  3. dslychko

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

    С нами с:
    14 июн 2007
    Сообщения:
    144
    Симпатии:
    0
    Подскажите как извлекать ид ?
     
  4. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    ид ты создаешь при загрузке файла.
    добавляешь в таблицу его имя и параметры и смотришь на ид записи. оставляешь на сервере под именем ид.ехт
     
  5. dslychko

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

    С нами с:
    14 июн 2007
    Сообщения:
    144
    Симпатии:
    0
    Имя файла менять нельзя.
     
  6. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    require_once('brain.php');
    отдаешь ты его под прежним именем.
     
  7. dslychko

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

    С нами с:
    14 июн 2007
    Сообщения:
    144
    Симпатии:
    0
    Отправляю форму :
    1. создаю новую запись в таблице, где поля "ID" - auto_increment , "filename" - $_FILES["filename"]["name"] ;
    3. извлекаю $ID=ID ;
    2 copy($_FILES["filename"]["tmp_name"],"c:/.../files/".$ID) .

    Извлекаю файл :
    1. Извлекаю ID и filename ;
    2. Отдаю файл
    PHP:
    1. $filename="c:/.../files/".$ID; //имя файла с путем
    2. $fname = $filename; // имя файла, которое отдается пользователю.
    3. header("Content-Disposition: attachment; filename=$fname\r\n");
    4. header("Content-Type: application/octet-stream\r\n");
    5. header("Content-Type: application/force-download\r\n");
    6. header("Content-Type: application/download\r\n");
    7. header("Content-Transfer-Encoding: binary\r\n");
    8. $fs = filesize($filename);
    9. header('Content-Length: '.$fs);
    10. $fp = fopen($filename,'rb');
    11. fpassthru($fp);
    12. fclose($fp);

    Так ?
     
  8. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    ??
    select * from files where id=$id
    ...
    $filename="c:/.../files/".$row['id'];
    ..
    header("Content-Disposition: attachment; filename=".$row['filename']."\r\n");
    ...

    смысл такой. таки надо выспаться и въехать.
     
  9. creage

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

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    вы рядом.

    алгоритм такой:
    пришел файл из формы, создали в базе строчку, получили ее айди, под этим айди сохранили присланный файлик. доступ к файлу соответственно по айди.