The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Запись файла в базу mySQL"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Запись файла в базу mySQL"
Сообщение от Dr. Nebula emailИскать по авторуВ закладки on 22-Мрт-04, 00:42  (MSK)
Кто нить сталкивался с таким?
Возникли траблы
конструкция типа:

   my $file = param ('file_s');
    while(<$file>)
    {
        push(@file_m, $_);
    }
    
    $db->do("INSERT INTO files (file) VALUES (?)", {}, ("@file_m"));

вставляет в базу какую то белиберду
а конструкция:

   my $file = param ('file_s');
   $db->do("INSERT INTO files (file) VALUES (?)", {}, ("$file"));

вставляет только путь и название файла
Каким образом можно сделать нормальную вставку файла в базу?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Запись файла в базу mySQL"
Сообщение от Дима emailИскать по авторуВ закладки on 22-Мрт-04, 18:29  (MSK)
>Кто нить сталкивался с таким?
>Возникли траблы
>конструкция типа:
>
>   my $file = param ('file_s');
>    while(<$file>)
>    {
>        push(@file_m, $_);
>    }
>
>    $db->do("INSERT INTO files (file) VALUES (?)", {}, ("@file_m"));
>
>вставляет в базу какую то белиберду
>а конструкция:
>
>   my $file = param ('file_s');
>   $db->do("INSERT INTO files (file) VALUES (?)", {}, ("$file"));
>
>вставляет только путь и название файла
>Каким образом можно сделать нормальную вставку файла в базу?


Я это делал не так. Я создавал уникальное число - типа "текущее время"."pid процесса" и сохранял это имя в базу, а файл с таким именем просто заводил на диске в отдельной директории. Мне кажется, что так лучше, чем совать в базу громадные BLOB объекты.

Удачи.
Дима.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Запись файла в базу mySQL"
Сообщение от Dr. Nebula emailИскать по авторуВ закладки on 22-Мрт-04, 18:35  (MSK)
>Я это делал не так. Я создавал уникальное число - типа "текущее
>время"."pid процесса" и сохранял это имя в базу, а файл с
>таким именем просто заводил на диске в отдельной директории. Мне кажется,
>что так лучше, чем совать в базу громадные BLOB объекты.

Это я уже читал на куче форумов. Но ни на одном я не нашел как _вставлять_ файлы. А передо мной стоит _именно_ такая задача.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Запись файла в базу mySQL"
Сообщение от Дима emailИскать по авторуВ закладки on 22-Мрт-04, 19:07  (MSK)
>>Я это делал не так. Я создавал уникальное число - типа "текущее
>>время"."pid процесса" и сохранял это имя в базу, а файл с
>>таким именем просто заводил на диске в отдельной директории. Мне кажется,
>>что так лучше, чем совать в базу громадные BLOB объекты.
>
>Это я уже читал на куче форумов. Но ни на одном я
>не нашел как _вставлять_ файлы. А передо мной стоит _именно_ такая
>задача.

Пишешь весь файл в переменную, а потом insert into table set file_col=$per;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Запись файла в базу mySQL"
Сообщение от Dr. Nebula emailИскать по авторуВ закладки on 23-Мрт-04, 00:24  (MSK)
>Пишешь весь файл в переменную, а потом insert into table set file_col=$per;
>
Я пробовал два варианта:
   my $file = param ('file_s');
    while(<$file>)
    {
        push(@file_m, $_);
    }

    $db->do("INSERT INTO files (file) VALUES (?)", {}, ("@file_m"));

вставляет в базу какую то белиберду
а конструкция:

   my $file = param ('file_s');
   $db->do("INSERT INTO files (file) VALUES (?)", {}, ("$file"));

вставляет только полный путь к файлу на локальной машине клиента

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Запись файла в базу mySQL"
Сообщение от Дима emailИскать по авторуВ закладки on 23-Мрт-04, 08:08  (MSK)
>>Пишешь весь файл в переменную, а потом insert into table set file_col=$per;
>>
>Я пробовал два варианта:
>   my $file = param ('file_s');
>    while(<$file>)
>    {
>        push(@file_m, $_);
>    }
>
>    $db->do("INSERT INTO files (file) VALUES (?)", {}, ("@file_m"));
>
>вставляет в базу какую то белиберду
>а конструкция:
>
>   my $file = param ('file_s');
>   $db->do("INSERT INTO files (file) VALUES (?)", {}, ("$file"));
>
>вставляет только полный путь к файлу на локальной машине клиента


Нужно писать так:

   my $file_content;
   my $file = param ('file_s');
    while(<$file>)
    {
        $file_content=$file_content.$_;
    }

    $db->do("INSERT INTO files (file) VALUES (?)", {}, $file_content);

Мне кажется, что так должно работать. Просто неизвестно как непечатные символы в случае записи вида ("@file_m") попадут в результирующую строку, из-за этого и получается белиберда.
Удачи.
Дима.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Запись файла в базу mySQL"
Сообщение от ACCA Искать по авторуВ закладки(ok) on 29-Апр-04, 00:24  (MSK)
my $file = param ('file_s');
my $content;
{
    local $/;
    $content = <$file>
}
$db->do("insert into files (file) values (?), {} $content);
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру