За последние 24 часа нас посетили 22509 программистов и 1144 робота. Сейчас ищут 644 программиста ...

Загрузка файлов через форму в базу данных

Тема в разделе "PHP для новичков", создана пользователем Lexxbry, 22 дек 2018.

  1. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Создал новую тему, так как старая не актуальна
    Стоит задача загружать файлы через форму в базу данных
    сейчас идет загрузка в папку на сервере
    вот код
    PHP:
    1. <?php
    2.  
    3. // A list of permitted file extensions
    4. $allowed = array('png', 'jpg', 'gif','zip' , 'doc' , 'docx' , 'xls' , 'xlsx' , 'pdf');
    5.  
    6. if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
    7.  
    8.     $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
    9.  
    10.     if(!in_array(strtolower($extension), $allowed)){
    11.         echo '{"status":"error"}';
    12.         exit;
    13.     }
    14.  
    15.     if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
    16.         echo '{"status":"success"}';
    17.         exit;
    18.     }
    19.  
    20.    
    21. }
    22.  
    23. echo '{"status":"error"}';
    создана таблица
    `nwy8j_files`
    с полями
    id - int
    catid - int (данные берутся из формы)
    file - blob

    подскажите как дописать этот обработчик на загрузку в бд
    или переписать
    по сути загрузка в папку уже не нужна
     
  2. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Какой смысл пихать файлы в бд? Или у вас обработка данных средствами СУРБД? В чём я сильно сомневаюсь.
     
  3. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    согласен, но потом данные из бд будут передаваться скриптом в crm
     
  4. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    В базу записывай путь к файлу. А сам фацл пусть в папке лежит.
     
    MouseZver нравится это.
  5. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Так если бы путь нужен был то и вопросов бы не было.
    Говорю же нужен сам файл в бд
    Это требование программеров из црм
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    дай мне контакты, лично скажу что их требование можно засунуть в говнокод.ру
     
    Dron-Boy нравится это.
  7. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Да бесполезно.
    Я сам знаю что хранить в бд это жесть.
    Достаточно путей. И объяснял и прочее.
    Как о стену горох
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    а как же mime type?
     
    MouseZver нравится это.
  9. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Эммм... Не совсем понял?
     
  10. yanuzay

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

    С нами с:
    28 мар 2018
    Сообщения:
    498
    Симпатии:
    57
    если это текстовые файлы с какими-нибудь электронными сертификатами или электронные ключи еще можно понять
     
  11. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    В том и дело это могут быть сканы как в картинках так и пдф и доки с экселями
     
  12. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    Есть идеи?
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @Lexxbry Идеи чего? Как получить с загруженного файла blob? file_get_contents($_FILES['upl']['tmp_name'])
     
  14. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    получить да, но его еще надо записать, а вот как я не могу ума приложить
     
  15. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  16. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    добавил в конец файла
    PHP:
    1. $servername = "localhost";
    2. $username = "us";
    3. $password = "pass";
    4. $dbname = "name";
    5.  
    6. // Create connection
    7. $conn = mysqli_connect($servername, $username, $password, $dbname);
    8. // Check connection
    9. if (!$conn) {
    10.     die("Connection failed: " . mysqli_connect_error());
    11. }
    12. file_get_contents($_FILES['upl']['tmp_name']);
    13.  
    14. $sql = "INSERT INTO zjq6z_tickets (.$_FILES['upl'])
    15. VALUES ('files')";
    16.  
    17. if (mysqli_query($conn, $sql)) {
    18.     echo "New record created successfully";
    19. } else {
    20.     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    21. }
    22.  
    23. mysqli_close($conn);
    в БД
    [BLOB - 0 Байт]
    не пойму где косяк
    ошибок не выдает
     
  17. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. $file = file_get_contents($_FILES['upl']['tmp_name']);
    2. $sql = "INSERT INTO zjq6z_tickets (file) VALUES ('$file')";
     
  18. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. // A list of permitted file extensions
    4. $allowed = array('png', 'jpg', 'gif','zip' , 'doc' , 'docx' , 'xls' , 'xlsx' , 'pdf');
    5.  
    6. if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
    7.  
    8.     $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
    9.  
    10.     if(!in_array(strtolower($extension), $allowed)){
    11.         echo '{"status":"error"}';
    12.         exit;
    13.     }
    14.  
    15.     if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
    16.         echo '{"status":"success"}';
    17.         exit;
    18.     }
    19. }
    20.  
    21. echo '{"status":"error"}';
    22. $servername = "localhost";
    23. $username = "name";
    24. $password = "pass";
    25. $dbname = "base";
    26.  
    27. // Create connection
    28. $conn = mysqli_connect($servername, $username, $password, $dbname);
    29. // Check connection
    30. if (!$conn) {
    31.     die("Connection failed: " . mysqli_connect_error());
    32. }
    33. $file = file_get_contents($_FILES['upl']['tmp_name']);
    34.  
    35. $sql = "INSERT INTO `zjq6z_tic` (files) VALUES ('$file')";
    36.  
    37. if (mysqli_query($conn, $sql)) {
    38.     echo "New record created successfully";
    39. } else {
    40.     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    41. }
    42.  
    43. mysqli_close($conn);
    в аплоадс грузит, а в бд пусто
     
  19. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
     
  20. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    $sql="INSERT INTO table_name (file) VALUES ('$file')";
    без апострофов так же
    это я потом добавил на посмотреть
    file - blob
    сделал новую таблицу с одним полем там оно files
     
  21. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  22. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    Injection #1
     
  23. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    убрал
    PHP:
    1.     if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){
    2.         echo '{"status":"success"}';
    3.         exit;
    4.     }
    5. }
    6.  
    7. echo '{"status":"error"}';
    результат тот же
    в папку не пишет теперь(оно и не надо)
    в базе пусто
     
  24. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Как было так и исправлял. Пусть сам за инъекции думает.
     
  25. Lexxbry

    Lexxbry Новичок

    С нами с:
    30 дек 2017
    Сообщения:
    48
    Симпатии:
    0
    привел к виду
    PHP:
    1. <?php
    2. $servername = "localhost";
    3. $username = "name";
    4. $password = "pass";
    5. $dbname = "base";
    6.  
    7. // Create connection
    8. $conn = mysqli_connect($servername, $username, $password, $dbname);
    9. // Check connection
    10. if (!$conn) {
    11.     die("Connection failed: " . mysqli_connect_error());
    12. }
    13.  
    14. // A list of permitted file extensions
    15. $allowed = array('png', 'jpg', 'gif','zip' , 'doc' , 'docx' , 'xls' , 'xlsx' , 'pdf');
    16.  
    17. if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){
    18. $file = file_get_contents($_FILES['upl']['tmp_name']);
    19.  
    20. $sql = "INSERT INTO zjq6z_tic (files) VALUES ('$file')";}
    21. if (mysqli_query($conn, $sql)) {
    22.     echo "New record created successfully";
    23. } else {
    24.     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    25. }
    26.  
    27. mysqli_close($conn);
    толку ноль