点击图片上传并将图片转为base64格式

之前的一个项目让我在注册的时候上传图片并注册成功后将图片保存到数据库。这里用的是base64方法
demo的样式:
在这里插入图片描述
案例代码如下:

<!DOCTYPE html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
		<title>上传图片预览功能</title>
		<link rel="stylesheet" href="style.css" />
		<script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script>
		<script type="text/javascript" src="../js/jquery.min.js"></script>
		<script>
			//正面
			function upload() {
				$('#img_z').click();
			}

			function getzImg(imgFile) {
				//判断图片大小
				var img1 = document.getElementById("img_z");
				var size = img1.files[0].size / 1024;
				if(size > 2048) {
					return alert('上传图片大小不能超过2M');
				} else {
					var file = imgFile.files[0];
					var reader = new FileReader();
					reader.readAsDataURL(file); //将文件读取为Data URL小文件   这里的小文件通常是指图像与 html 等格式的文件
					reader.onload = function(e) {
						$("#zmz").attr("src", e.target.result);
						document.getElementById("img_z_base64").value = reader.result;
					}
				}
			}

		</script>
		<script>
			function a(){
				var img_z_base64 = document.getElementById("img_z_base64").value;
				alert(img_z_base64)
			}
		</script>
	</head>

	<body>
		<li class="aui-list-item">
			<div class="aui-list-item-inner row aui-content-padded " style="margin-left: 0;">
				<div class=" aui-col-xs-8">
					图片上传
				</div>
				<div hidden="hidden">
					<input type="file" accept="image/*" onchange="getzImg(this)" value="" id="img_z" style="display:none" />
					<textarea id="img_z_base64"></textarea>
				</div>
				<div class="img_wp" onclick="upload()">
					<img src="../img/timg.jpg" id="zmz" height="55" width="100" />
				</div>
			</div>
			<div>
				<input type="button" onclick="a()" value="上传"/>
			</div>
		</li>
	</body>
</html>

接着在后台直接将base64的编码存储到数据库中即可。

注意点:
1.因为是用base64存储的,所以需要将数据库表的格式改为mediumblob用于存储大量数据:
在这里插入图片描述
2.因为我用的是ajax传递的参数,最后转为json格式到后台的。所以用base64存储的时候发现只能存储600kb以下的图片。而600kb以上的图片不能存储,后台还报错。最后发现是因为json超出大小限制了。
解决方法:在tomcat文件夹下的conf文件中的server.xml 配置:

<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" 
maxPostSize="-1"/>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值