关于HTML中上传图片

关于HTML中上传图片

值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行。

但是还有一点,浏览器只允许用户点击<input type="file">来选择本地文件,用JavaScript对<input type="file">的value赋值是没有任何效果的。当用户选择了上传某个文件后,JavaScript也无法获得该文件的真实路径:
但是有个方法可以,利用File和FileReader两个主要对象,可以获得文件信息并读取文件。

HTML文件:

<form method="post" enctype="multipart/form-data" id="file_upload">
	<p>图片预览:</p>
	<img id="image-preview">
	<p>
	<input type="file" id="file" name="upload_image" accept="image/gif, image/jpeg, image/png, image/jpg">
	<input type="button" value="下载图片" onclick="save()" />
	</p>
    <p id="info"></p>
</form>

CSS文件:

#image-preview {
	border: 1px solid #ccc;
	width: 100%;
	height: 100%;
	max-width: 200px;
	max-height: 200px;
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center center;
}

JavaScript:

<script type="text/javascript">
			let fileInput = document.getElementById('file');
			let info = document.getElementById('info');
			let preview = document.getElementById('image-preview');
			// 监听change事件:
			fileInput.addEventListener('change', function() {
				// 清除背景图片:
				preview.style.backgroundImage = '';
				if (!fileInput.value) {
					info.innerHTML = '没有选择文件';
					return;
				}
				let file = fileInput.files[0];
				let size = file.size;
				if (size >= 1 * 1024 * 1024) {
					alert('文件大小超出限制');
					info.innerHTML = '文件大小超出限制';
					return false;
				}
				// 获取File信息:
				info.innerHTML = `文件名称:  + ${file.name}<br>文件大小: ${file.size} <br>上传时间: ${file.lastModifiedDate}`;
				if (!['image/jpeg', 'image/png', 'image/gif'].includes(file.type)) {
					alert('不是有效的图片文件!');
					return;
				}
				// 读取文件:
				let reader = new FileReader();
				reader.onload = function(e) {
					let data = e.target.result;
					console.log(preview, 'a标签')
					preview.src = data
				};
				// 以DataURL的形式读取文件:
				reader.readAsDataURL(file);

			});

			function save() {

				var url = preview.src; // 获取图片地址
				var a = document.createElement('a'); // 创建一个a节点插入的document
				var event = new MouseEvent('click') // 模拟鼠标click点击事件
				a.download = 'beautifulGirl' // 设置a节点的download属性值
				a.href = url; // 将图片的src赋值给a节点的href
				a.dispatchEvent(event)
			}
</script>

  • 38
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那就可爱多一点点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值