asp中如何将图形文件存入数据库?请各位给与提示!谢谢!

fengziyoyo 2004-04-20 08:32:07
各位大虾我现用ASP做一电子档案系统的论文,(为了实现电子档案需上传图片)现在上传图片已经做到了但是却不知道如何将图片存入数据库或是将他们的路径存入数据库,我本想将路径写入一个隐藏域中通过form进行传送,可是行不通,都快急死我了,希望高手们给小妹作些指点,我将不胜感激,谢谢!声明,数据库为SQL2000
...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengziyoyo 2004-04-21
  • 打赏
  • 举报
回复
怎么给你份啊?
gjd111686 2004-04-20
  • 打赏
  • 举报
回复
浏览文件Show.asp
<%
Dim ID,TypeValue
ID=Request.QueryString("ID")
TypeValue=Request.QueryString("Type")
Session("DataCmd").CommandText="select * from MediaLib where ID="&CInt(ID)
Set Session("rs_MediaLib")=Server.CreateObject("ADODB.Recordset")
Session("rs_MediaLib").Open Session("DataCmd").CommandText,Session("DataConn"),1,3
Response.ContentType=TypeValue
Response.BinaryWrite Session("rs_MediaLib")("MediaFile")
%>
gjd111686 2004-04-20
  • 打赏
  • 举报
回复
上载文件处理Result.asp
<%@ Language=VBScript %>
<script runat="server" language="vbscript">
Function GetUpload(FormData)
Dim DataStart,DivStr,DivLen,DataSize,FormFieldData
'分隔标志串(+CRLF)
DivStr = LeftB(FormData,InStrB(FormData,StrToBin(VbCrLf))+1)
'分隔标志串长度
DivLen=LenB(DivStr)
PosOpenBoundary=InStrB(FormData,DivStr)
PosCloseBoundary=InStrB(PosOpenBoundary + 1,FormData,DivStr)
Set Fields=CreateObject("Scripting.Dictionary")
While PosOpenBoundary>0 And PosCloseBoundary>0
'name起始位置(name="xxxxx"),加6是因为[name="]长度为6
FieldNameStart=InStrB(PosOpenBoundary,FormData,StrToBin("name="))+6
FieldNameSize=InStrB(FieldNameStart,FormData,ChrB(34))-FieldNameStart '(")的ASC值=34
FormFieldName=BinToStr(MidB(FormData,FieldNameStart,FieldNameSize))
'filename起始位置(filename="xxxxx")
FieldFileNameStart=InStrB(PosOpenBoundary,FormData,StrToBin("filename="))+10
If FieldFileNameStart<PosCloseBoundary And FieldFileNameStart>PosopenBoundary Then
FieldFileNameSize=InStrB(FieldFileNameStart,FormData,ChrB(34))-FieldFileNameStart '(")的ASC值=34
FormFileName=BinToStr(MidB(FormData,FieldFileNameStart,FieldFileNameSize))
Else
FormFileName=""
End If
'Content-Type起始位置(Content-Type: xxxxx)
FieldFileCTStart=InStrB(PosOpenBoundary,FormData,StrToBin("Content-Type:"))+14
If FieldFileCTStart<PosCloseBoundary And FieldFileCTStart>PosOpenBoundary Then
FieldFileCTSize=InStrB(FieldFileCTStart,FormData,StrToBin(VbCrLf&VbCrLf))-FieldFileCTStart
FormFileCT=BinToStr(MidB(FormData,FieldFileCTStart,FieldFileCTSize))
Else
FormFileCT=""
End If
'数据起始位置:2个CRLF开始
DataStart=InStrB(PosOpenBoundary,FormData,StrToBin(VbCrLf & VbCrLf))+4
If FormFileName<>"" Then
'数据长度,减1是因为数据文件的存取字节数问题(可能是AppendChunk方法的问题):
'由于字节数为奇数的图象存到数据库时会去掉最后一个字符导致图象不能正确显示,
'字节数为偶数的数据文件就不会出现这个问题,因此必须保持字节数为偶数。
DataSize=InStrB(DataStart,FormData,DivStr)-DataStart-1
FormFieldData=MidB(FormData,DataStart,DataSize)
Else
'数据长度,减2是因为分隔标志串前有一个CRLF
DataSize=InStrB(DataStart,FormData,DivStr)-DataStart-2
FormFieldData=BinToStr(MidB(FormData,DataStart,DataSize))
End If
'建立一个Dictionary集存储Form中各个Field的相关数据
Set Field=CreateUploadField()
Field.Name=FormFieldName
Field.FilePath=FormFileName
Field.FileName=GetFileName(FormFileName)
Field.ContentType=FormFileCT
Field.Length=LenB(FormFieldData)
Field.Value=FormFieldData
Fields.Add FormFieldName,Field
PosOpenBoundary=PosCloseBoundary
PosCloseBoundary=InStrB(PosOpenBoundary+1,FormData,DivStr)
Wend
Set GetUpload=Fields
End Function

Function BinToStr(binstr)
Dim varlen,clow,ccc,skipflag
'中文字符Skip标志
skipflag=0
ccc=""
If Not IsNull(binstr) Then
varlen=LenB(binstr)
For i=1 To varlen
If skipflag=0 Then
clow=MidB(binstr,i,1)
'判断是否中文的字符
If AscB(clow)>127 Then
'AscW会把二进制的中文双字节字符高位和低位反转,所以要先把中文的高低位反转
ccc=ccc&Chr(AscW(MidB(binstr,i+1,1)&clow))
skipflag=1
Else
ccc=ccc&Chr(AscB(clow))
End If
Else
skipflag=0
End If
Next
End If
BinToStr = ccc
End Function


'字符串->二进制字符
Function StrToBin(varstr)
StrToBin=""
For i=1 To Len(varstr)
varchar=mid(varstr,i,1)
varasc = Asc(varchar)
' asc对中文字符求出来的值可能为负数,
' 加上65536就可求出它的无符号数值
' -1在机器内是用补码表示的0xffff,
' 其无符号值为65535,65535=-1+65536
' 其他负数依次类推。
If varasc<0 Then
varasc = varasc + 65535
End If
'对中文的处理:把双字节低位和高位分开
If varasc>255 Then
varlow = Left(Hex(Asc(varchar)),2)
varhigh = right(Hex(Asc(varchar)),2)
StrToBin = StrToBin & chrB("&H" & varlow) & chrB("&H" & varhigh)
Else
StrToBin = StrToBin & chrB(AscB(varchar))
End If
Next
End Function

'取得文件名(去掉Path)
Function GetFileName(FullPath)
If FullPath <> "" Then
FullPath = StrReverse(FullPath)
FullPath = Left(FullPath, InStr(1, FullPath, "\") - 1)
GetFileName = StrReverse(FullPath)
Else
GetFileName = ""
End If
End Function
</script>
<script runat="server" language="jscript">
function CreateUploadField(){ return new uf_Init() }
function uf_Init(){
this.Name = null
this.FileName = null
this.FilePath = null
this.ContentType = null
this.Value = null
this.Length = null
}
</script>

<%
Dim FormData,FormSize
FormSize=Request.TotalBytes
FormData=Request.BinaryRead(FormSize)
Set Fields=GetUpload(FormData)
Set Session("rs_MediaLib")=Server.CreateObject("ADODB.Recordset")
Dim TypeValue,RecordId
TypeValue=Fields("TypeValue").Value
If TypeValue<>"" Then
Select Case TypeValue
Case "Modify"
RecordId=Fields("RecordId").Value
Session("rs_MediaLib").Open "select * from MediaLib where ID="&CInt(RecordId),Session("DataConn"),1,3
Session("rs_MediaLib")("Remark")=Fields("Remark"+RecordId).Value
Session("rs_MediaLib")("Category")=Fields("Category"+RecordId).Value
Session("rs_MediaLib")("Type")=Fields("Type"+RecordId).Value
If Fields("MediaFile"+RecordId).Value<>"" Then
Session("rs_MediaLib")("MediaFile").AppendChunk Fields("MediaFile"+RecordId).Value
End If
Session("rs_MediaLib").Update
Session("rs_MediaLib").Close
Set Session("rs_MediaLib")=Nothing
Response.Redirect "List.asp"
Case "Del"
RecordId=Fields("RecordId").Value
Session("DataCmd").CommandText="delete from MediaLib where ID="&CInt(RecordId)
Set Session("DataCmd").ActiveConnection=Session("DataConn")
Set Session("rs_main")=Session("DataCmd").Execute
Response.Redirect "List.asp"
Case "Add"
Session("rs_MediaLib").Open "select * from MediaLib",Session("DataConn"),1,3
Session("rs_MediaLib").AddNew
Session("rs_MediaLib")("Remark")=Fields("Remark").Value
Session("rs_MediaLib")("Category")=Fields("Category").Value
Session("rs_MediaLib")("Type")=Fields("Type").Value
If Fields("MediaFile").Value<>"" Then
Session("rs_MediaLib")("MediaFile").AppendChunk Fields("MediaFile").Value
End If
Session("rs_MediaLib").Update
Session("rs_MediaLib").Close
Set Session("rs_MediaLib")=Nothing
Response.Redirect "List.asp"
End Select
End If
%>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="/StyleLib/Default_Style_Sheet.css">
</head>

<body>
<!--#include virtual="/TemplateLib/Head.asp"-->
<!--#include virtual="/TemplateLib/Tail.asp"-->
</body>

</html>
gjd111686 2004-04-20
  • 打赏
  • 举报
回复
<%@ Language=VBScript %>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="/StyleLib/Default_Style_Sheet.css">
<script>
function MediaSubmit(TypeValue,Id)
{
MediaForm.TypeValue.value=TypeValue;
MediaForm.RecordId.value=Id;
if(MediaForm.TypeValue.value!=""||MediaForm.RecordId.value!="")
{
if(TypeValue=="Add")
{
if(MediaForm.Remark.value!="")
{
MediaForm.submit();
}
else
{
window.alert("媒体描述不允许为空!");
}
}
else
{
MediaForm.submit();
}
}
else
{
window.alert("媒体描述不允许为空!");
}
}
function ShowMedia(Id,Type)
{
var hwnd=window.open('','','');
switch(Type)
{
case "image/*":
hwnd.document.write("<Img src='/System/Media/Show.asp?ID="+Id+"&Type="+Type+"' width=80 height=30 border=0></a>");
break;
case "audio/*":
hwnd.document.write("<BgSound src='/System/Media/Show.asp?ID="+Id+"&Type="+Type+"' width=80 height=30 border=0>");
break;
case "video/*":
hwnd.document.write("<Img dynsrc='/System/Media/Show.asp?ID="+Id+"&Type="+Type+"' width=80 height=30 border=0></a>");
break;
case "application/msword":
hwnd.location.href="/System/Media/Show.asp?ID="+Id+"&Type="+Type;
break;
case "application/vnd.ms-excel":
hwnd.location.href="/System/Media/Show.asp?ID="+Id+"&Type="+Type;
break;
case "application/*":
hwnd.location.href="/System/Media/Show.asp?ID="+Id+"&Type="+Type;
break;
default:
break;
}
}
</script>
</head>

<body>
<!--#include virtual="/TemplateLib/Head.asp"-->
<center>
<form action="Result.asp" method="post" name="MediaForm" enctype="multipart/form-data">
<input type="hidden" name="TypeValue" size="10" value="">
<input type="hidden" name="RecordId" size="10" value="">
<table border="0" cellpadding="0" cellspacing="0" width="80%">
<tr>
<td width="10%" class="TdClass_Head">多媒体库</td>
</tr>
</table>
<br>
<table border="0" width="80%" cellspacing="0" cellpadding="0">
<tr>
<td width="10%" class="TdClass_0">媒体描述</td>
<td width="30%" class="TdClass_0">媒体分类</td>
<td width="10%" class="TdClass_0">媒体类型</td>
<td width="40%" class="TdClass_0">媒体文件</td>
<td width="10%" class="TdClass_0">执行操作</td>
</tr>
<tr>
<td width="10%" class="TdClass_1"><input name="Remark" size="10" value=""></td>
<td width="30%" class="TdClass_1">
<select name="Category" size=1 style="width:80%">
<option value="">--请选择--</option>
<%
Session("DataCmd").CommandText="select distinct Category from MediaLib"
Set Session("DataCmd").ActiveConnection=Session("DataConn")
Set Session("rs_Category")=Session("DataCmd").Execute
While Not Session("rs_Category").Eof
If Not Session("rs_Category").Eof Then
%>
<option value="<%=Session("rs_Category")("Category")%>"><%=Session("rs_Category")("Category")%></option>
<%
End If
Session("rs_Category").MoveNext
Wend
%>
</select>
<script>
function AddCategory()
{
var m_Category="";
m_Category=window.prompt("请输入媒体分类","");
if(m_Category!="")
{
MediaForm.Category.length=MediaForm.Category.length+1;
MediaForm.Category.options[MediaForm.Category.length-1].text=m_Category;
MediaForm.Category.options[MediaForm.Category.length-1].value=m_Category;
MediaForm.Category.options[MediaForm.Category.length-1].selected="selected";
}
}
</script>
<input type="button" value="." id="" name="" onclick="AddCategory()">
</td>
<td width="20%" class="TdClass_1">
<select name="Type" size=1 style="width:80%">
<option value="">--请选择--</option>
<option value="image/*">图像</option>
<option value="audio/*">音频</option>
<option value="video/*">视频</option>
<option value="application/msword">文档</option>
<option value="application/vnd.ms-excel">表格</option>
<option value="application/*">应用</option>
</select>
</td>
<td width="30%" class="TdClass_1"><input type="file" name="MediaFile" size="10" value=""><a href="#">浏览媒体</a></td>
<td width="10%" class="TdClass_1"><input type="button" onclick="MediaSubmit('Add','NULL')" value="增加" id=Add name=Add></td>
</tr>
<%
Session("DataCmd").CommandText="select * from MediaLib"
Set Session("DataCmd").ActiveConnection=Session("DataConn")
Set Session("rs_main")=Session("DataCmd").Execute
iCount=0
While Not Session("rs_main").Eof
If Not Session("rs_main").Eof Then
If iCount Mod 2 =0 Then
%>
<tr>
<td width="10%" class="TdClass_0"><input name="Remark<%=Session("rs_main")("ID")%>" size="10" value="<%=Session("rs_main")("Remark")%>"></td>
<td width="30%" class="TdClass_0"><input name="Category<%=Session("rs_main")("ID")%>" size="10" value="<%=Session("rs_main")("Category")%>" readonly></td>
<td width="10%" class="TdClass_0"><input name="Type<%=Session("rs_main")("ID")%>" size="10" value="<%=Session("rs_main")("Type")%>" readonly></td>
<td width="40%" class="TdClass_0"><input type="file" name="MediaFile<%=Session("rs_main")("ID")%>" size="10" value=""><a href="#" onclick="ShowMedia('<%=Session("rs_main")("ID")%>','<%=Session("rs_main")("Type")%>')">浏览媒体</a></td>
<td width="10%" class="TdClass_0"><input type="button" onclick="MediaSubmit('Modify','<%=Session("rs_main")("ID")%>')" value="修改" id=Modify name=Modify><input type="button" onclick="MediaSubmit('Del','<%=Session("rs_main")("ID")%>')" value="删除" id=Del name=Del></td>
</tr>
<%Else%>
<tr>
<td width="10%" class="TdClass_1"><input name="Remark<%=Session("rs_main")("ID")%>" size="10" value="<%=Session("rs_main")("Remark")%>"></td>
<td width="30%" class="TdClass_1"><input name="Category<%=Session("rs_main")("ID")%>" size="10" value="<%=Session("rs_main")("Category")%>" readonly></td>
<td width="10%" class="TdClass_1"><input name="Type<%=Session("rs_main")("ID")%>" size="10" value="<%=Session("rs_main")("Type")%>" readonly></td>
<td width="40%" class="TdClass_1"><input type="file" name="MediaFile<%=Session("rs_main")("ID")%>" size="10" value=""><a href="#" onclick="ShowMedia('<%=Session("rs_main")("ID")%>','<%=Session("rs_main")("Type")%>')">浏览媒体</a></td>
<td width="10%" class="TdClass_1"><input type="button" onclick="MediaSubmit('Modify','<%=Session("rs_main")("ID")%>')" value="修改" id=Modify name=Modify><input type="button" onclick="MediaSubmit('Del','<%=Session("rs_main")("ID")%>')" value="删除" id=Del name=Del></td>
</tr>
<%
End If
Session("rs_main").MoveNext
iCount=iCount+1
End If
Wend
%>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="80%">
<tr>
<td width="100%" class="TdClass_Head"><input type="button" value="返回" id="Return" name="Return" onclick="window.location.href='/System/Index.asp'"></td>
</tr>
</table>
</form>
</center>
<!--#include virtual="/TemplateLib/Tail.asp"-->
</body>

</html>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧