点击图片上传并将图片转为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
    评论
码,该怎么实现呢? 要将图片转为base64码,可以通过以下步骤实现: 1. 使用element-ui的上传组件上传图片。 2. 在上传成功的回调函数中,获取到上传成功的图片文件对象。 3. 使用FileReader对象将图片文件对象转换成base64编码。 4. 将转换后的base64编码赋值给一个变量,即可在需要的地方使用。 下面是示例代码: ``` <template> <el-upload class="avatar-uploader" action="/api/upload" :show-file-list="false" :on-success="handleUploadSuccess" :before-upload="beforeUpload" > <img v-if="imageUrl" :src="imageUrl" class="avatar"> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> </template> <script> export default { data() { return { imageUrl: '', imageBase64: '' } }, methods: { handleUploadSuccess(response, file) { // 上传成功的回调函数 this.imageUrl = URL.createObjectURL(file.raw) // 使用FileReader对象将图片文件转换成base64编码 let reader = new FileReader() reader.onload = (e) => { this.imageBase64 = e.target.result } reader.readAsDataURL(file.raw) }, beforeUpload(file) { // 返回false阻止上传,返回true或者Promise.resolve则允许上传 const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' if (!isJpgOrPng) { this.$message.error('上传头像图片只能是 JPG 格式或 PNG 格式!') return false } const isLt2M = file.size / 1024 / 1024 < 2 if (!isLt2M) { this.$message.error('上传头像图片大小不能超过 2MB!') return false } return true } } } </script> ``` 注意:这只是一个示例代码,实际使用时需要根据自己的需求进行修改和完善。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值