ASP读JPG/PNG/BMP图片转base64位数据,可实现上传功能。

ASP读JPG/PNG/BMP图片转base64位数据,可实现上传功能。图片转成base64数据,上传服务端。并由服务端转成图片并存储

以下是图片读取,并转成Base64的代码。

文件名:img2base64.asp

<%@codepage=65001%>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<%
Function ImagesToBase64(FileName)
  Dim xml
  Dim root
  Dim fs
  Dim FilePath
  Dim objStream
  Dim objXMLDoc
  Dim Base64
  ''定义变量完结
  '创建对像
  FilePath=Server.MapPath(FileName)
  getFileExt = Mid(FilePath, InstrRev(FilePath, ".") + 1)	'获取文件扩展名,此时可加入判断,非图片的不传,需要的自行处理。
  Set objXMLDoc=Server.CreateObject("msxml2.FreeThreadedDOMDocument")
      '设定生成XML文档的根为 Base64Data
      objXMLDoc.loadXML "<?xml version='1.0'?><Base64Data />"
  Set fs = Server.createObject("Scripting.FileSystemObject") ''服务器需要FSO组件
  If fs.FileExists(FilePath) Then '判断File文件是否存在
      '用 stream 来读取数据
      Set objStream = Server.CreateObject("ADODB.Stream")
      objStream.Type = 1
      objStream.Open
      objStream.LoadFromFile FilePath
      objXMLDoc.documentElement.dataType = "bin.base64"
      objXMLDoc.documentElement.nodeTypedvalue = objStream.Read
      '数据流读取结束.得到了值 objXMLDoc
      '创建XML文件
            Set xml = Server.CreateObject("msxml2.FreeThreadedDOMDocument")
            xml.load objXMLDoc
            If xml.ReadyState>2 Then
              Set root=xml.getElementsByTagName("Base64Data")
              Base64="data:image/"&getFileExt&";base64,"&vbcrlf&root.Item(0).Text
            else
              Base64=""
            End If
            Set xml=Nothing
      Set objStream=Nothing
  else
    Base64=""
  End If
  Set fs=Nothing
  Set objXMLDoc=Nothing
  
  ImagesToBase64=Base64
End Function
'12.png放到程序当前目录,调上边的函数读取成Base64代码
base64img=ImagesToBase64("12.png")  '支持PNG、JPG、JPEG、BMP
%>
<img src="<%=base64img%>">
<form action="base642img.asp" method=post>
<input type="text" name="img" value='<%=base64img%>'> 
<input type=submit value="提交">
</form>

接收base64,并转成图片保存。支持png/jpg/img,判断环节自己改。

以下文件名:base642img.asp

<%@codepage=65001%>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<%

Subfolder=year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now()) ''生成当天的子文件夹的名称
pict=Trim(request.Form("img"))		'获取Form提交过来的img
'分割字符串  base64 找到文件扩展名 picl(1) 
picn=split(pict,";base64,")	
picl=split(picn(0),"/")
picture=picn(1)

response.write picn(1)
response.write "<br>"
path=Subfolder&"."&picl(1)

xmlstr="<data>"&picture&"</data>"
Dim xml : Set xml=Server.CreateObject("MSXML2.DOMDocument")
Dim stm : Set stm=Server.CreateObject("ADODB.Stream")
xml.resolveExternals=False
xml.loadxml(xmlstr)
xml.documentElement.setAttribute "xmlns:dt","urn:schemas-microsoft-com:datatypes"
xml.documentElement.dataType = "bin.base64"
stm.Type= 1'adTypeBinary
stm.Open
stm.Write xml.documentElement.nodeTypedValue
stm.SaveToFile Server.MapPath(path)
stm.Close
Set xml=Nothing
Set stm=Nothing
response.Write(path)
%>

以上代码来源网络,经修改处理后,可用。

在流媒体上传页面,只能通过URL传递其它参数。POST传送的其它参数会与上传的文件一起转成二进制进行上传。这就造成了接收端的麻烦。

此上传为文本上传,并非流文件上传,页面还可以辅以其它参数。接收端可以直接使用 request(“变量”)

本页说明的功能则可以使用POST传递多个参数。

需自行设置文件名,并找一张图片放到当前目录,文件名12.png。建议先用小的图片做测试,不超过100K。
IIS8的默认限制4M,超过4M的图片会报错:超过缓冲区限制。(可以在IIS–网站—ASP–限制属性–响应缓冲限制 中修改)
但建议修改缓冲区,大图片会很消耗系统资源,会造成页面卡顿。所以,此功能也仅适合于较小图片的上传。比如头像、证件之类。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值