Старый 18.08.2006, 14:03   #1   
4e
 
Аватар для Alexey
 
Сообщений: 3,610
Регистрация: 27.09.2001
Возраст: 42

Alexey вне форума Не в сети
Хранение фалов в БД

Понмю тут спор был. Вопрос следующий: если хранить файл в БД (MS SQL), а потом необходимо выложить его в Веб, то каким образом организовать ссылку на этот файл?
  Ответить с цитированием
Старый 18.08.2006, 18:15   #2   
асинхроник
 
Аватар для AIM-9M
 
Сообщений: 976
Регистрация: 15.10.2004
Возраст: 40
Записей в дневнике: 3

AIM-9M вне форума Не в сети
Элементарно, по первичному ключу генеришь ссылку, и по запросу к твоему CGI-приложению, например http://yoursite/cgiapp.exe?file_id=1548, отгружаешь файл клиенту с первичным ключом 1548.
  Ответить с цитированием
Старый 18.08.2006, 21:53   #3   
error #65535
 
Аватар для maximn
 
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24

maximn вне форума Не в сети
Цитата:
Сообщение от Alexey
Понмю тут спор был. Вопрос следующий: если хранить файл в БД (MS SQL), а потом необходимо выложить его в Веб, то каким образом организовать ссылку на этот файл?
любым. главное - помните про хедеры
  Ответить с цитированием
Старый 18.08.2006, 23:00   #4   
4e
 
Аватар для Alexey
 
Сообщений: 3,610
Регистрация: 27.09.2001
Возраст: 42

Alexey вне форума Не в сети
AIM-9M, а как генрить ссылку? ну скажем найти нужный файл по условию - я могу, но как по ссылке (где в кач-ве параметра стоит первичный ключ) вытащить файл? может пример есть?
  Ответить с цитированием
Старый 19.08.2006, 08:40   #5   
асинхроник
 
Аватар для AIM-9M
 
Сообщений: 976
Регистрация: 15.10.2004
Возраст: 40
Записей в дневнике: 3

AIM-9M вне форума Не в сети
То-есть, как отдать сам файл? Записываешь его в бинарный поток, и пересылаешь. Пример смогу показать не раньше понедельника.
  Ответить с цитированием
Старый 20.08.2006, 22:46   #6   
4e
 
Аватар для Alexey
 
Сообщений: 3,610
Регистрация: 27.09.2001
Возраст: 42

Alexey вне форума Не в сети
да, взглянул бы
  Ответить с цитированием
Старый 21.08.2006, 01:47   #7   
Dogs Fucker
 
Аватар для phasma
 
Сообщений: 423
Регистрация: 02.11.2005
Возраст: 31

phasma вне форума Не в сети
тип данных sql_variant не подайдет ?)
  Ответить с цитированием
Старый 21.08.2006, 08:47   #8   
4e
 
Аватар для Alexey
 
Сообщений: 3,610
Регистрация: 27.09.2001
Возраст: 42

Alexey вне форума Не в сети
проблема в том, что программировать я забросил на 4-м или каком там курсе и далек от новых тендений в программировании. максимум, что я щаз могу сделать - написать insert into mytable (file) values ('c:\myfile.pdf') и такой же селект, но ведь такая конструкция не работает наверняка тут есать те, кто такое каждый день проворачивает, вот и прошу помощи.
  Ответить с цитированием
Старый 21.08.2006, 12:57   #9   
Dogs Fucker
 
Аватар для phasma
 
Сообщений: 423
Регистрация: 02.11.2005
Возраст: 31

phasma вне форума Не в сети
не, я просто знаю, что в MySQL есть BLOB тип полей ))) MS SQL не знаю ))
  Ответить с цитированием
Старый 21.08.2006, 14:56   #10   
асинхроник
 
Аватар для AIM-9M
 
Сообщений: 976
Регистрация: 15.10.2004
Возраст: 40
Записей в дневнике: 3

AIM-9M вне форума Не в сети
Alexey, а ты на чем, собственно, само веб-приложение пишешь? Если на Дельфи, то напиши в приват свое мыло, я завтра пришлю пример.
  Ответить с цитированием
Старый 21.08.2006, 18:08   #11   
4e
 
Аватар для Alexey
 
Сообщений: 3,610
Регистрация: 27.09.2001
Возраст: 42

Alexey вне форума Не в сети
файл в базу надо из дельфи, а вытягивать их PHP, но если пример кинешь я разберусь
  Ответить с цитированием
Старый 22.08.2006, 20:31   #12   
асинхроник
 
Аватар для AIM-9M
 
Сообщений: 976
Регистрация: 15.10.2004
Возраст: 40
Записей в дневнике: 3

AIM-9M вне форума Не в сети
Цитата:
Сообщение от Alexey
файл в базу надо из дельфи, а вытягивать их PHP, но если пример кинешь я разберусь
прмерно так
Цитата:
procedure LoadText(id: integer);
var s: TMemoryStream;

procedure WriteStream(stream: TMemoryStream);
var
OutputStream: THandleStream;
begin
Flush(output);


OutputStream := THandleStream.Create(GetStdHandle(STD_OUTPUT_HANDL E));

stream.SaveToStream(OutputStream);

OutputStream.Free;
end;

begin

DM1.adospLib.Parameters.Clear;
DM1.adospLib.Parameters.CreateParameter('book_id', ftInteger, pdInput, 4, id);
DM1.adospLib.Open;

s := TMemoryStream.Create;
(DM1.adospLib.Fields[0] as TBlobField).SaveToStream(s);

WriteStream(s);


end;
Но, что-то мне подсказывает, что на ПХП это сделать проще можно.
  Ответить с цитированием
Поиск в теме: 


Опции темы

Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind