Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как хранить файлы непосредственно в базе данных? / 11 сообщений из 11, страница 1 из 1
04.07.2002, 07:56:42
    #32035064
Daun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
С ASP-старинцы необходимо при uploade файлов на сервер, сохранять их не на диск а непосредственно в базу данных и потом получать к ним доступ. Сервак 7.0. Как это сделать, никто не подскажет?
...
Рейтинг: 0 / 0
04.07.2002, 08:04:28
    #32035065
Gena G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Я постил сюда пример как это делато в ADO. Только это все очень медленно работает. Годится только как репозитарий.
...
Рейтинг: 0 / 0
04.07.2002, 14:52:00
    #32035169
guest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
А не могли бы вы поподробней о примере и что у вас медленно работает?
...
Рейтинг: 0 / 0
04.07.2002, 15:53:03
    #32035197
Gena G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Я же говорю - в этом форуме ищите. Медленно - потому что это BLOB
...
Рейтинг: 0 / 0
04.07.2002, 18:38:30
    #32035243
Как хранить файлы непосредственно в базе данных?
Создай таблицу со столбцом тип данных Image. Далее загоняй в этот столбец свои файлы. Как работать с типом Image найдешь в этом форуме.
...
Рейтинг: 0 / 0
05.07.2002, 16:07:28
    #32035351
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Лови, брат!
Вот табла в базе pubs:
-------------------------------------------------
CREATE TABLE [imgs] (
[n] [int] IDENTITY (1, 1) NOT NULL ,
[img] [image] NOT NULL ,
CONSTRAINT [PK_imgs] PRIMARY KEY CLUSTERED
(
[n]
) ON [PRIMARY]
)
GO
--------------------------------------------------
Вот файл zmain.htm:
------------------------------------------------------
<html>
<body>
<form name="fm" method="post" enctype="multipart/form-data" action="zblob.asp">
<input name="fi" type="file">
<input name="sbt" type="submit">
</form>
</body>
</html>
---------------------------------------------------------
Вот файл zblob.asp:
------------------------------------------------------
<%@ language="vbscript" %>
<%
rd=request.binaryread(request.totalbytes)
rd=midb(rd, instrb(rd, chrb(13) & chrb(10) & chrb(13) & chrb(10))+4)
set cn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
cn.connectionstring="provider=sqloledb;server=ТвойСервер;initial catalog=pubs;user id=sa;password="
cn.open
rs.open "imgs", cn, 1, 3
rs.addnew
rs("img").appendchunk rd
rs.update
rs.close
cn.close
%>
--------------------------------------------------------
Файлы заносит в поле img исправно, несмотря на дурацкую ошибку: конфликт операции с курсором.
Но до конца не тестировал. Будут вопросы - пиши.
Примочки, типа ConnectionTimeOut, сделай сам.
...
Рейтинг: 0 / 0
06.07.2002, 12:37:32
    #32035398
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Вот небольшое усиление для zblob.asp:
создай в табле "imgs" доп. поле "info" (varchar(8000)), для занесения инфы о загруженном файле.
----------------------------------------------------
файл zblob.asp с поправками:
-----------------------------------------------
<%@ language="vbscript" %>
<%
rd=request.binaryread(request.totalbytes)
hd=leftb(rd, instrb(rd, chrb(13) & chrb(10) & chrb(13) & chrb(10))-1)
rd=midb(rd, instrb(rd, chrb(13) & chrb(10) & chrb(13) & chrb(10))+4)
for i=1 to lenb(hd)
info=info & chr(ascb(midb(hd, i, 1)))
next
set cn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
cn.connectionstring="provider=sqloledb;server=z;initial catalog=pubs;user id=sa;password="
cn.open
rs.open "imgs", cn, 1, 3
rs.addnew
rs("info")=info
rs("img").appendchunk rd
rs.update
rs.close
cn.close
%>
---------------------------------------------------------

в поле "info" будет что-то вроде:
------------------------------------------------------
n info
---- -----------------------------------------

5 -----------------------------7d2118364d4
Content-Disposition: form-data; name="fi"; filename="D:\Inetpub\wwwroot\bullet.gif"
Content-Type: image/gif
6 -----------------------------7d26e64d4
Content-Disposition: form-data; name="fi"; filename="D:\Inetpub\wwwroot\CHESS.EXE"
Content-Type: application/octet-stream
--------------------------------------------------------

Парсинг инфы труда не составит.
...
Рейтинг: 0 / 0
07.07.2002, 14:03:04
    #32035442
Daun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Спасибо всем! ;-)
...
Рейтинг: 0 / 0
07.07.2002, 14:45:25
    #32035444
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Ещё не всё. Ошибка (конфликт операции с курсором) устраняется заменой cn.CursorLocation=adUseServer (по умолчанию) на cn.CursorLocation=adUseClient. Странно. Для провайдера Microsoft.Jet.Oledb.4.0 это неважно.
Вот окончательный вариант текста файла zblob.asp:
---------------------------------------------------------
<%@ language="vbscript" %>
<html><body><!-- #include file="adovbs.inc" -->
<%
server.scripttimeout=900
rd=request.binaryread(request.totalbytes)
hd=leftb(rd, instrb(rd, chrb(13) & chrb(10) & chrb(13) & chrb(10))-1)
rd=midb(rd, instrb(rd, chrb(13) & chrb(10) & chrb(13) & chrb(10))+4)
for i=1 to lenb(hd)
info=info & chr(ascb(midb(hd, i, 1)))
next
set cn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
cn.cursorlocation=aduseclient
cn.mode=admodewrite
cn.connectionstring="provider=sqloledb;data source=z;initial catalog=pubs;user id=sa;password=;"
'cn.connectionstring="provider=microsoft.jet.oledb.4.0;data source=d:\мои документы\db1.mdb;user id=admin;password=;"
cn.open
rs.open "imgs", cn, adopenforwardonly, adlockoptimistic, adcmdtable
rs.addnew
rs("info")=info
rs("img").appendchunk rd
rs.update
rs.close
cn.close
%>
<h2>Спасибо за Ваш вклад в дело <font color="red">мировой революции</font>!!!</h2>
</body>
</html>
----------------------------------------------------------
P.S. Прошу желающих отправить какой-нибудь файлик в мой домашний SQL Server 7.0 до 14.55 по Москве (для окончательной проверки ентого дела).
http:\\194.158.205.235
...
Рейтинг: 0 / 0
07.07.2002, 14:58:42
    #32035445
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Ну мощно! Прибыл гад: filename="C:\PISGANEW\BLOBLIB\mdlBlobOps.bas"
И кто Вы, маска???
...
Рейтинг: 0 / 0
07.07.2002, 21:08:55
    #32035468
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как хранить файлы непосредственно в базе данных?
Дорогой брат Даун! (все дауны - мои братья. Я и сам даун).
Вот склепал тебе не "мигающий" чат на основе объекта XMLHTTP, причем, заставил ентот объект понимать кириллицу (грубо, но работает).
---------------------------------------------
Вот main.htm:
-----------------------------------------------------
<html><body><input type="text" id="nm" value="your name"><br>
<input type="text" id="txt" style="width:500" value="write here"> 
<input name="snd" type="button" onclick="send()" value="send!"><hr>
<div id="dv"></div>
<script language="vbscript">
dim hh, kk, zz, dd, i, gg, rt, ss
kk=""
set hh=createobject("microsoft.xmlhttp")
sub send()
zz=nm.value & "." & txt.value
dd=""
for i=1 to len(zz)
ss=""
if asc(mid(zz, i, 1))<10 then
ss="00" & asc(mid(zz, i, 1))
elseif asc(mid(zz, i, 1))<100 then
ss="0" & asc(mid(zz, i, 1))
else
ss=asc(mid(zz, i, 1))
end if
dd=dd & ss & " "
next
dd=cstr(dd)
hh.open "post","http://ТвояМашина/zserver.asp", 0
hh.setrequestheader "qwe", dd
hh.send
txt.focus()
txt.value=""
end sub
call ht()
sub ht()
hh.open "post","http://ТвояМашина/zserver.asp", 0
hh.send
gg=""
rt=hh.responsetext
for i=1 to len(rt)/4
gg=gg & chr(cbyte(mid(rt, 4*i-3, 3)))
next
if gg<>kk then
dv.innertext=dv.innertext & chr(13) & gg
kk=gg
end if
call window.settimeout("ht",500,"vbscript")
end sub
</script>
</body></html>
---------------------------------------------------------
Вот zserver.asp:
--------------------------------------------------------
<%@ language="vbscript" %>
<%
if request.servervariables("http_qwe")<>"" then
application.lock
application("text")=request.servervariables("http_qwe")
application.unlock
end if
response.write application("text")
%>
-----------------------------------------------------
P.S. Чел, приславший мне файл mdlBlobOps.bas, видимо, ещё один крупный спец по блобам, работающий в стиле Copy&Paste.
P.P.S. Не ругайте за оффтопик. Уж очень я увлёкся. Последний раз это. Теперь, когда у меня есть собственный чат, буду беседовать сам с собой.
SIGNING OFF.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как хранить файлы непосредственно в базе данных? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]