JavaScript实现图片上传、预览及Ajax提交完整示例

作者:青柠

时间:2026-10-23

浏览:553

本文详细介绍如何使用JavaScript实现图片文件的本地预览与Ajax异步提交。通过FileReader API读取图片数据实现前端即时展示,利用FormData对象封装文件及其他参数,结合jQuery的ajax方法完成后端交互,包含完整的HTML结构、CSS样式及JS逻辑代码。

文章目录

JavaScript实现图片上传、预览及Ajax提交完整示例

本文分享了一段使用JavaScript实现图片上传、前端预览并通过Ajax提交至后端的完整代码示例,供开发者参考。

图片上传与预览功能实现

图片上传与预览功能实现

JavaScript实现图片上传、预览及Ajax提交完整示例

HTML结构部分

HTML结构部分

HTML结构代码


<div class="file-box">
 <img id="preview" />
 <input type="text" id="imgfield" class="txt" placeholder="预览">
 <input type="file" name="file" id = "input_file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" "imgPreview(this)" > 
</div>

CSS样式定义部分

CSS样式定义部分

CSS样式代码


.file-box {
 position: relative;
 display: inline-block;
}
.file-box img {
 width: 50px;
 height: 50px;
 border-radius: 50%;
 position: absolute;
 top: -30px;
 left: 0;
 display: inline-block;
 border: none;
}
.file-box .txt,.file-box .file {
 width: 70px;
 height: 36px;
 position: absolute;
 top: -20px;
 left: 100px;
 text-align: center;
}

JavaScript核心逻辑部分

JavaScript核心逻辑部分

JavaScript预览逻辑代码


function imgPreview(fileDom) {
 //判断是否支持FileReader
 if(window.FileReader) {
 var reader = new FileReader();
 } else {
 alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
 }
 //获取文件
 var file = fileDom.files[0];
 var imageType = /^image\//;
 //是否是图片
 if(!imageType.test(file.type)) {
 alert("请选择图片!");
 return;
 }
 //读取完成
 reader.onload = function(e) {
 //获取图片dom
 var img = document.getElementById("preview");
 //图片路径设置为读取的图片
 img.src = e.target.result;
 };
 reader.readAsDataURL(file);
}

通过Ajax提交图片数据至后端

通过Ajax提交图片数据至后端

FormData封装与Ajax提交逻辑

若需将图片信息通过Ajax传递给后端,必须使用new FormData()创建表单数据对象,并通过append()方法向其中添加字段。具体实现代码如下:

注意:以下代码应在图片预览成功后执行,即调用reader.readAsDataURL(file)之后。

Ajax提交代码示例


var formData = new FormData(); 
formData.append('file', $('#input_file')[0].files[0]); //添加图片信息的参数
formData.append('sizeid',123); //添加其他参数
$.ajax({
 url: '/material/uploadFile',
 type: 'POST',
 cache: false, //上传文件不需要缓存
 data: formData,
 processData: false, // 告诉jQuery不要去处理发送的数据
 contentType: false, // 告诉jQuery不要去设置Content-Type请求头
 success: function (data) {
 var rs = eval("("+data+")");
 if(rs.state==1){
 tipTopShow('上传成功!');
 }else{
 tipTopShow(rs.msg);
 }
 },
 error: function (data) {
 tipTopShow("上传失败");
 }
})

JavaScript实现图片上传、预览及Ajax提交完整示例

更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQuery上传操作汇总》进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章