public void VideoToDB(string file)
{
FileStream fs = FileOpenRead(file);
byte[] bytes = new byte[fsLength];
fsRead(bytes, 0, bytesLength);
fsClose();
try
{
SqlCommand cmd = new SqlCommand ("update VideoTable set
VideoFile=@videos where UserNo='XXX'",conn);
cmdParametersAdd("@videos", SqlDbTypeImage)Value = bytes;
if (cmdConnectionState == ConnectionStateClosed)
cmdConnectionOpen();
cmdExecuteNonQuery();
}
finally
{
cmdConnectionClose();
}
}
我的理解,你问题的关键是程序如何往数据库里写入文件。对吧?无论是什么类型的文件。
这里有一些概念上的东西和你一起清理一下:
1)你需要了解你要用什么数据库?流行的企业级别的有:oracle,MSSQLServer, Sybase等,桌面的就更多了MSACCESS, MSSQL EXPRESS, SQLITE, POSTGRESQL等。无论什么数据库肯定会有一种数据类型为二进制的如oracle叫BLOB可以存放大量的数据流;
2)设计的核心就是通过C#前台程序的序列化功能将任何的文件以流的形式读入内存,转化成二进制文件流stream,然后通过特定的数据库API接口将该数据流写入数据库保存到上面提到的BLOB中
3)使用的时候,就从数据库里先把二进制数据流读出来,然后写入一个新文件里。
以上是设计概要,真正要实现一个软件会遇到很多具体问题,个人认为这是一个很好的将理论转化为实践的机会。多看看C#的技术书,有问题再问我。我会跟踪你的问题的!
这个分为两种情况吧!
情况一:Ueditor上传的和视频在富文本中,可以直接随着富文本字段保存到数据库中;
情况二:想单独保存上传的地址或者视频地址,可以修改Ueditor的代码,在上传时调用插入数据库方法,此情况不建议时间,会产生很多的垃圾数据;
<%
'responseBinaryWrite(requestBinaryRead(requestTotalBytes))''''''1
dim data, datalength,fstart,fend,tstart,tend,tinfo,flag,flaglen,tformname,tfile,tfilename,tfileparth,tfileext,sfilename
set formdata=serverCreateObject("scriptingdictionary")
set updata=serverCreateObject("adodbstream")
set tmpdata=serverCreateObject("adodbstream")
updatamode=3
updatatype=1
updataopen
updatawrite(requestBinaryRead(requestTotalBytes))
updataposition=0
data=updataread
datalength=updatasize
tcrlf=chrb(13) & chrb(10)
flag=leftb(data,instrb(data,tcrlf)-1)
fstart=lenb(flag)+2
flaglen=fstart
do
fend=instrb(fstart,data,tcrlf&tcrlf)+3
tmpdatatype=1
tmpdatamode=3
tmpdataopen
updataposition=fstart
updatacopyto tmpdata,fend-fstart
fstart=instrb(fend,data,flag)-1
tmpdataposition=0
tmpdatatype=2
tmpdatacharset="gb2312"
tinfo=tmpdatareadtext
'responseWrite tinfo''''''''''''''''''''''''''''''''''''''''''''''
tstart=instr(22,tinfo,"name=""")+6
'tstart=instr(tinfo,"name=""")+6'''''''''''''''''''''''''''''''''
tend=instr(tstart,tinfo,"""",1)
tformname=mid(tinfo,tstart,tend-tstart)
' responseWrite(tformname)'''''''''''''''''''''
'if instr(tinfo,"filename=""")>0 then'如果是文件
if instr(tstart,tinfo,"filename=""",1)>0 then
tmpdataclose
tmpdatatype=1
tmpdatamode=3
tmpdataopen
tstart=instr(tend,tinfo,"filename=""",1)+10
tend=instr(tstart,tinfo,"""",1)
tfile=mid(tinfo,tstart,tend-tstart)
'responseWrite tinfo''''''''''
'responseWrite "<br/>"''''''''''
'responseWrite("tstart="&tstart&"<br/>")''''''''''''''''''''''''''''''''''''
'responseWrite("tinfolen="&len(tinfo)&"<br/>")
'responseWrite("tend="&tend&"<br/>")
'responseWrite "tfile="&tfile&"<br/>"
'if tfile<>"" then'''''''''''''''''''''''''''''''''''''''''''''''''
' responseWrite("no kong")''''''''''''''
'else'''''''''''''''''''''''''''''
'responseWrite("kong")''''''''''
'end if'''''''''''''''''''''''''''''''''''''''''''''''''
if tfile<>"" then
tfilename=mid(tfile,instrrev(tfile,"\")+1)
tfilepath=left(tfile,instrrev(tfile,"\"))
tfileext=mid(tfile,instrrev(tfile,"")+1)
sfilename=GetRndFileName(tfileext)
'responseWrite(sfilename)''''''''''
updataposition=fend
updatacopyto tmpdata,fstart-2-fend
'responseBinaryWrite(tmpdata)''''''''2
tmpdatasavetofile serverMapPath("img_web")& "\" & sfilename,2
formdataadd tformname,sfilename
end if
else
tmpdataclose
tmpdatatype=1
tmpdatamode=3
tmpdataopen
updataposition=fend
updatacopyto tmpdata,fstart-fend-2
tmpdataposition=0
tmpdatatype=2
tmpdatacharset="gb2312"
formdataadd tformname,tmpdatareadtext
end if
fstart=fstart+flaglen
tmpdataclose
loop while (fstart+2)<datalength
set tmpdata=nothing
updataclose
set updada=nothing
'for each key in formdatakeys
' responseWrite "表单控件名称:"&key&"值:"& formdataitem(key)&"<br/>"
'next
Function GetRndFileName(sExt)
dim sRnd
randomize
sRnd=int(900rnd)+100
GetRndFileName=year(now())&month(now())&day(now())&hour(now())&minute(now())&second(now())&sRnd&""&sExt
end function
%>
给分吧
以上就是关于C#窗体应用程序怎么把一个上传视频到数据库全部的内容,包括:C#窗体应用程序怎么把一个上传视频到数据库、C#窗体编程中怎么向数据库中存入视频文件、如何把ueditor上传的图片视频等信息写入自己的数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)