整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

10行JavaScript代码完成图片的上传预览

10行JavaScript代码完成图片的上传预览

击右上方红色按钮关注“web秀”,让你真正秀起来

前言

冬至,希望大家都可以有饺子和汤圆吃,主要是能和自己家人爱人一起吃个饭。

下面进入主题,用原生JS给撸个图片上传,预览的小示例,希望对大家有所帮助。

示例

function fChange() { 
 let file=document.getElementById('file'); 
 // 输出已经选择图片名字 
 console.log(file.value); 
 // 输出已经选择的图片对象 
 console.log(file.files[0]); 
} 
... 
<input type="file" id="file" onchange="fChange()">

10行JavaScript代码完成图片的上传预览

我们怎么把图片对象渲染到页面了?达到可以预览的目的?

// file 转 blob对象 
let bold=window.URL.createObjectURL(file.files[0]); 
console.log('bold==>'+bold); 
 
let boldImg=document.getElementById('bold'); 
boldImg.src=bold; 
 
// file 转 base64 
let base64Img=document.getElementById('base64'); 
var reader=new FileReader(); 
reader.readAsDataURL(file.files[0]); 
reader.onload=function (e) { 
 console.log('base64==>'+this.result); 
 base64Img.src=this.result; 
}

10行JavaScript代码完成图片的上传预览

10行JavaScript代码完成图片的上传预览

这样看blob对象和base64都可以预览图片,但是blob对象仅仅是当次缓存,如果刷新,你重新把之前转的字符串放到src是不可以预览的,当时base64是可以的。所以存库的时候不仅可以图片路径,还可以直接存base64(base64很占用数据库空间,文件越大,base64字符串越大)

优化

下面我们对上面示例做优化,可以上传多张图片并预览,美化界面。

10行JavaScript代码完成图片的上传预览

10行JavaScript代码完成图片的上传预览

<div id="img-pre"> 
</div> 
<div id="add-pic"> 
 <input type="file" id="up-file" onchange="fChange()"> 
</div>

css样式

#add-pic{ 
 width: 100px; 
 height: 100px; 
 background: url('./add-pic.png') 
} 
#add-pic input{ 
 width: 100%; 
 height: 100%; 
 display: none; 
} 
#img-pre:after{ 
 display: block; 
 content: ''; 
 clear: both; 
} 
#img-pre img{ 
 float: left; 
 width: 100px; 
 height: 100px; 
 margin-right: 10px; 
}

javascript

let addPic=document.getElementById('add-pic'), upFile=document.getElementById('up-file'); 
// 监听图片点击,从而触发input file的点击事件 
addPic.addEventListener('click', function(){ 
 upFile.click(); 
}) 
function fChange() { 
 let file=document.getElementById('up-file'); 
 let imgPre=document.getElementById('img-pre'); 
 
 // file 转 blob对象 
 let bold=window.URL.createObjectURL(file.files[0]); 
 
 // 创建img元素,并添加到img-pre元素里 
 var img=document.createElement("img"); 
 img.setAttribute("src", bold); 
 imgPre.appendChild(img); 
}

主要是通过css隐藏掉input file选择文件按钮,然后用+号图片点击事件来触发input file的点击事件,达到能选择图片的目的。

公告

喜欢小编的点击关注,了解更多知识!

源码地址请点击下方“了解更多”


者:蓝色的秋风

转发链接:https://mp.weixin.qq.com/s/cruL9JGZNZQFrMSrzJJWiQ

端页面:html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<link href="./uploadfile.css" rel="stylesheet">

<script src="./jquery.min.js"></script>

<script src="./jquery.uploadfile.min.js"></script>

</head>

<body>

<img class="imgPreview" width="80px" height="80px" style="display: none"/>

<div id="mulitplefileuploader">上传</div>

<div id="status"></div>

<script>

$(document).ready(function (){

var settings={

url: "upload.php",

dragDrop: true,

fileName: "myfile",

allowedTypes: "jpg,png,gif,doc,pdf,zip",

returnType: "json",

onSuccess: function (files, data, xhr){

$('.imgPreview').show();

$('.imgPreview').attr('src','uploads/'+data);

}