ASP.NET后台如何获取Ajax上传的base64在线解码器图像数据

这里我用的是python3.6+Flask。实现一个登录时的验证码,点击通过Ajax的方式获取后台传来的二进制数据

 # classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,
 # 但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
 # 画线条,开始 结束点 线条颜色 线条宽度
 # 起始颜色 最终颜色
 # 按范围生成随机输R G B
 # 用来随机生成一个字符串(包括英文和数字)
 # 验证码图片的宽和高
 # 验证码的字体 随机产生字体 字体大小
 # 随机生成4为字符串
 # 填充字符串 x y坐标 文本 字体 字体颜色
 # 绘制干扰线 绘制多少条干扰线

下面是我验证码对应的视图函数

import base64 # Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据。
 # 获取验证码图片,和验证码值
 
视图函数中我们需要把二进制数据进行编码,这里python2和python3可以有点区别,或者是我生成的图片二进制数据有和别的有点区别,我打印出来的 base64.b64encode(bur_str) 是由 b' ' 所包括的,就如下图所示
 

这样的话就导致网页上显示不了图片,但是去掉了 b' ' 就能正常显示图片了,所以我在视图函数中将其转换为字符串,然后切片去掉两边的单引号,最后再返回到HTML中去,

下面是我HTML中对应的img标签代码,以及Ajax代码

 
<!--验证码显示区域,点击验证码进行更新-->
 

 
使用jQuery中的$.post()方法也可以实现,代码很简单,js中点击图片则就会触发Ajax,然后post请求,获取数据,使用jQuery的attr()方法替换对应img标签的src属性,这样图片就可以显示在页面中了,

这里需要注意的是,如果你Ajax获取的数据不是乱码而是正常的数据,但是就是不显示图片,你就得去看看img标签src属性是否是正确,像我就出现了上面 那样的,图片数据被 b' '

 
 

包括  然后再被双引号包括,这样就导致了显示不了图片

 
}

有时候我们需要动态的将图片的二进制在页面上进行显示,如我们需要弄一个验证码的功能,那么如果我们的验证码的图片在后台得到的是该图片的二进制,那么当我们需要在页面上点击一个按钮利用ajax进行切换的时候,如果在后台直接返回的是该图片的二进制,那么该图片是无法进行显示的。

使用ajax请求,如果仅仅返回图片的二进制然后把它传给img的src是不能的,目前的方法是把图片的二进制进行base64编码,
base64编码后的内容,这样就可以使用后台直接利用图片的二进制进行图片的显示了

//注意这里src的写法,data是经过base64编码后的内容 //其实在第一次运行的时候是可以直接将图片的二进制作为Image的src进行显示的,但是因为后台统一返回的是 //经过base64编码过后的内容,所以这里初始显示的时候也是利用base64的方法
}

我要回帖

更多关于 base64在线解码器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信