CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

如何将图片通过函数直接转换数据后存入SQL数据库的image类型?

楼主sxBamboo(竹子)2006-03-13 11:03:31 在 .NET技术 / ASP.NET 提问

如何将图片地址(如“image/abc.jpg”)直接转成二进制数据存入SQL数据库中的"image"字段?      
     
     
  我要的是在同一个页面直接用函数转成image字段,如下程序:      
     
  function     图片转二进制函数()      
            .....      
  end     function      
     
  rs.addnew      
  rs("image")=图片转二进制函数("image/abc.jpg")      
  rs.update      
     
  不是要提交数据后转换的那种,谢谢! 问题点数:50、回复次数:8Top

1 楼ghostzp(不做举人,如何榜眼探花)回复于 2006-03-13 11:06:16 得分 0

把字符串image/abc.jpg转成二进制?还是把图片转成二进制?  
  真是奇怪的需求Top

2 楼sxBamboo(竹子)回复于 2006-03-13 11:08:05 得分 0

读取   “image/abc.jpg”路径的图片路径,将该路径的图片转成2进制!Top

3 楼sxBamboo(竹子)回复于 2006-03-13 11:11:00 得分 0

image/abc.jpg   为某图片的路径  
  读取“image/abc.jpg”下的图片文件,将该路径的图片转成2进制!Top

4 楼sxBamboo(竹子)回复于 2006-03-13 13:04:20 得分 0

希望知道的人告诉我一下,谢谢!分不够可再加Top

5 楼Balle_Aime(Balle-Aime)回复于 2006-03-14 13:05:50 得分 50

多个表单和多个图片一起上传完美解决方案  
   
  upload.inc  
  <!--------------------->  
  <SCRIPT   RUNAT=SERVER   LANGUAGE=VBSCRIPT>  
  Function   GetUpload(FormData)  
  Dim   DataStart,DivStr,DivLen,DataSize,FormFieldData  
  ''分隔标志串(   CRLF)  
  DivStr   =   LeftB(FormData,InStrB(FormData,str2bin(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,str2bin("name="))   6  
  FieldNameSize   =   InStrB(FieldNameStart,FormData,ChrB(34))   -   FieldNameStart   ''(")的ASC值=34  
  FormFieldName   =   bin2str(MidB(FormData,FieldNameStart,FieldNameSize))  
   
  ''filename起始位置(filename="xxxxx")  
  FieldFileNameStart   =   InStrB(PosOpenBoundary,FormData,str2bin("filename="))   10  
  If   FieldFileNameStart   <   PosCloseBoundary   And   FieldFileNameStart   >   PosopenBoundary   Then  
  FieldFileNameSize   =   InStrB(FieldFileNameStart,FormData,ChrB(34))   -   FieldFileNameStart   ''(")的ASC值=34  
  FormFileName   =   bin2str(MidB(FormData,FieldFileNameStart,FieldFileNameSize))  
  Else  
  FormFileName   =   ""  
  End   If  
   
  ''Content-Type起始位置(Content-Type:   xxxxx)  
  FieldFileCTStart   =   InStrB(PosOpenBoundary,FormData,str2bin("Content-Type:"))   14  
  If   FieldFileCTStart   <   PosCloseBoundary   And   FieldFileCTStart   >   PosOpenBoundary   Then  
  FieldFileCTSize   =   InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf   &   VbCrLf))   -   FieldFileCTStart  
  FormFileCT   =   bin2str(MidB(FormData,FieldFileCTStart,FieldFileCTSize))  
  Else  
  FormFileCT   =   ""  
  End   If  
   
  ''数据起始位置:2个CRLF开始  
  DataStart   =   InStrB(PosOpenBoundary,FormData,str2bin(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   =   bin2str(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   bin2str(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  
  bin2str   =   ccc  
  End   Function    
   
   
  ''把普通字符串转成二进制字符串函数  
  Function   str2bin(varstr)  
  str2bin=""  
  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)  
  str2bin   =   str2bin   &   chrB("&H"   &   varlow)   &   chrB("&H"   &   varhigh)  
  Else  
  str2bin   =   str2bin   &   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>  
  <!---------------------------------------------------->  
  在提交的叶面使用  
  <form   method="POST"   enctype="multipart/form-data">  
  保存的叶面  
  将upload.inc包含  
  <!--#include   file="upload.inc"-->  
  <  
   
  function   lngConvert2(strTemp)                
  str1=leftb(strTemp,1)                
  str2=rightb(strTemp,1)                
  lngConvert2   =   clng(ascb(str2)   ((ascb(str1)   *   256)))                
  end   function                
                 
  function   lngConvert(strTemp)                
  str1=leftb(strTemp,1)                
  str2=rightb(strTemp,1)                
  len1=ascb(str1)                
  len2=ascb(str2)                
  lngConvert   =   clng(ascb(str1)   ascb(str2)   *   256)                
  end   function    
               
  Dim   FormData,FormSize                
  FormSize=Request.TotalBytes                
  FormData=Request.BinaryRead(FormSize)                
               
  Set   Fields   =   GetUpload(FormData)                
  If   Fields("newfile").FileName<>""   Then                
  tempstr=Leftb(Fields("newfile").Value,10)                
  tstr=chrb(255)&chrb(216)&chrb(255)&chrb(224)&chrb(0)&chrb(16)&chrb(74)&chrb(70)&chrb(73)&chrb(70)                
  end   if                
                 
  '提交页面的表单内容  
  txt1=Fields("txt1").Value  
  txt2=Fields("txt2").Value  
  txt3=Fields("txt3").Value  
             
  Set   rs   =   Server.CreateObject("ADODB.Recordset")                
  sql="select   *   from   news"                
  rs.open   sql,conn,1,3            
  '插入纪录      
  rs.addnew                
  rs("title")=title  
  rs("body")=content  
  rs("pub")=from  
  rs("up_date")=now()  
  set   field=rs.fields("pic")                
  field.appendchunk   Fields("newfile").Value                
  '多个图片一样处理  
  Rs.Update                
  rs.close                
  conn.close                
  set   rs=nothing                
  set   conn=nothingTop

6 楼sxBamboo(竹子)回复于 2006-03-19 05:14:38 得分 0

还是没有人知道吗?Top

7 楼yurenjf(Never)回复于 2006-03-24 09:36:12 得分 0

markTop

8 楼Ccode(小立)回复于 2006-03-28 21:04:31 得分 0

markTop

相关问题

  • 时间存入SQL数据库问题!
  • SQL数据库转换excel问题,急!!!
  • 如何将一jpg图像存入sql数据库
  • 使用ASP怎样把bmp存入MS SQL数据库中。
  • SQL数据库中怎样防止存入相同的记录?
  • 如何把VF数据库转换为SQL数据库?
  • 文本文件如何转换为SQL数据库
  • 请问怎样ACCESS数据库转换为SQL数据库?
  • 把SQL数据库转换成ASA数据库,如何处理?
  • SQL数据库转换为Access数据库问题?

关键词

  • 函数
  • 二进制
  • 数据
  • chrb
  • 图片
  • 转成
  • 路径
  • rs
  • jpg
  • image

得分解答快速导航

  • 帖主:sxBamboo
  • Balle_Aime

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo