使用FileReader对象的readAsDataURL方法回显图片

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title>使用FileReader对象的readAsDataURL方法回显图片</title>
		<script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
	</head>
	
<body>
	<script type="text/javascript">  
     function changImg(e){  
        for (var i = 0; i < e.target.files.length; i++) {  
            var file = e.target.files.item(i); 
            //正则表达式判断文件类型是否为图片
            while (!(/^image\/.*$/i.test(file.type))) {              	
                  
                alert('不是图片');
                break;//不是图片 就跳出这一次循环
            }  
            //实例化FileReader 
            var freader = new FileReader(); 
            //FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL
            //readAsDataURL方法会使用base-64进行编码
            //编码的资料由data字串开始,后面跟随的是MIME type,然后再加上base64字串,逗号之后就是编码过的图像文件的内容。
            freader.readAsDataURL(file);  
            freader.onload = function(e) { 
            	//更改img的src属性
                $("#myImg").attr("src",e.target.result);  
            }  
        }  
    }  
</script> 

<form action="">  
   <input type="file" name="files" accept="image/*" οnchange="changImg(event)" >
   <img alt="暂无图片" id="myImg"  height="200px",width="200px">  
</form> 
</body>  
 
</html>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当你使用表单上传多个图片时,可以通过以下方式回显图片: 1. 在前端将上传的图片以 base64 编码的形式保存起来,然后通过 `img` 标签的 `src` 属性将其显示出来。 ```html <template> <div> <input type="file" ref="fileInput" multiple @change="handleFileUpload"> <button @click="submitForm">提交表单</button> <div v-for="(file, index) in files" :key="index"> <img :src="file.url" alt="上传的图片"> </div> </div> </template> <script> export default { data() { return { files: [], // 存放上传的文件 } }, methods: { handleFileUpload() { this.files = Array.from(this.$refs.fileInput.files) this.files.forEach(file => { this.getBase64(file) .then(url => { // 将 base64 编码的图片保存起来 file.url = url }) }) }, submitForm() { const formData = new FormData() this.files.forEach(file => { formData.append('images', file) }) // 将 formData 发送到后端处理 // ... }, getBase64(file) { return new Promise((resolve, reject) => { const reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => resolve(reader.result) reader.onerror = error => reject(error) }) }, }, } </script> ``` 2. 在后端处理完上传的图片后,将图片URL 发送给前端,然后在前端将其显示出来。 ```html <template> <div> <input type="file" ref="fileInput" multiple @change="handleFileUpload"> <button @click="submitForm">提交表单</button> <div v-for="(file, index) in files" :key="index"> <img :src="file.url" alt="上传的图片"> </div> </div> </template> <script> export default { data() { return { files: [], // 存放上传的文件 } }, methods: { handleFileUpload() { this.files = Array.from(this.$refs.fileInput.files) }, submitForm() { const formData = new FormData() this.files.forEach(file => { formData.append('images', file) }) axios.post('/upload', formData) .then(response => { // 后端返回的图片 URL 数组 const urls = response.data.urls urls.forEach((url, index) => { // 将图片URL 保存到对应的文件对象中 this.files[index].url = url }) }) }, }, } </script> ``` 以上是两种常见的回显图片的方式,你可以根据自己的需求进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ThinkPet

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

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

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

打赏作者

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

抵扣说明:

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

余额充值