首页 >> js开发 >> js代码JavaScript实现图片伪异步上传过程解析
js代码JavaScript实现图片伪异步上传过程解析
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
实现逻辑
实现逻辑
首先要知道, ajax无法发送带有文件的post请求所以,所以还是要用同步的方式,但是刷新的时候,我们不要在原来的页面刷新,去一个隐藏的iframe里面刷新,form表单中action正常填写处理文件上传的操作。紧着着的target填写一个隐藏的iframe。 这样表单提交之后,文件会被上传,被刷新页面为隐藏的iframe,因此用户看到的效果和ajax处理的效果是一样的。dom结构
dom结构
在这里有两个需要注意的地方,一是iframe是隐藏的,对用户不可见。二是form的target属性就是iframe的id属性,必须确保这个地方的一致,否则获取不到服务器的回传地址
图片预览
图片预览一般在图片上传之前,我们希望用户可以预览到上传之后的样子,这里有两种处理方式。一个是等图片上传成功之后,服务器返回图片的地址,将图片显示,由于中间的时间差很小,给用户一种错觉好像真的是在预览。第二种方式是在图片上传之前,获取input中的本地图片地址,然后显示,由于是显示本地的图片,所以没有时间差,实现真正的预览。简单的逻辑逻辑代码如下
$("#userHeadImg").change(function(event) {
var file = $(event.target)[0].files[0];
var src = URL.createObjectURL(file);
if(file){
//表示获取到了图片
}else{
//表示点击了取消
}
//这里的src就是图片的地址,将它放在任意一个img标签的src属性里面
});
$("#userHeadImg").change(function(event) {
var file = $(event.target)[0].files[0];
var src = URL.createObjectURL(file);
if(file){
//表示获取到了图片
}else{
//表示点击了取消
}
//这里的src就是图片的地址,将它放在任意一个img标签的src属性里面
});开始上传
开始上传
在onchange事件里面促发form的submit事件,上传图片$("#upload").submit();
$("#upload").submit();获取服务器回传的图片url
获取服务器回传的图片url服务器将地址返回到iframe,iframe会被刷新。使用js监听iframe的onload,一旦有onload发生,就表示服务器回传了信息var imgsrc=$(this).contents().find("pre").text();
var imgsrc=$(this).contents().find("pre").text();增加上传文件类型限制
增加上传文件类型限制accept="image/gif;image/jpg;"accept="image/gif;image/jpg;"以上就是本文的全部内容,希望对大家的学习有所帮助。
实现逻辑
首先要知道, ajax无法发送带有文件的post请求所以,所以还是要用同步的方式,但是刷新的时候,我们不要在原来的页面刷新,去一个隐藏的iframe里面刷新,form表单中action正常填写处理文件上传的操作。紧着着的target填写一个隐藏的iframe。 这样表单提交之后,文件会被上传,被刷新页面为隐藏的iframe,因此用户看到的效果和ajax处理的效果是一样的。dom结构
dom结构
在这里有两个需要注意的地方,一是iframe是隐藏的,对用户不可见。二是form的target属性就是iframe的id属性,必须确保这个地方的一致,否则获取不到服务器的回传地址
图片预览
图片预览一般在图片上传之前,我们希望用户可以预览到上传之后的样子,这里有两种处理方式。一个是等图片上传成功之后,服务器返回图片的地址,将图片显示,由于中间的时间差很小,给用户一种错觉好像真的是在预览。第二种方式是在图片上传之前,获取input中的本地图片地址,然后显示,由于是显示本地的图片,所以没有时间差,实现真正的预览。简单的逻辑逻辑代码如下
$("#userHeadImg").change(function(event) {
var file = $(event.target)[0].files[0];
var src = URL.createObjectURL(file);
if(file){
//表示获取到了图片
}else{
//表示点击了取消
}
//这里的src就是图片的地址,将它放在任意一个img标签的src属性里面
});
$("#userHeadImg").change(function(event) {
var file = $(event.target)[0].files[0];
var src = URL.createObjectURL(file);
if(file){
//表示获取到了图片
}else{
//表示点击了取消
}
//这里的src就是图片的地址,将它放在任意一个img标签的src属性里面
});开始上传
开始上传
在onchange事件里面促发form的submit事件,上传图片$("#upload").submit();
$("#upload").submit();获取服务器回传的图片url
获取服务器回传的图片url服务器将地址返回到iframe,iframe会被刷新。使用js监听iframe的onload,一旦有onload发生,就表示服务器回传了信息var imgsrc=$(this).contents().find("pre").text();
var imgsrc=$(this).contents().find("pre").text();增加上传文件类型限制
增加上传文件类型限制accept="image/gif;image/jpg;"accept="image/gif;image/jpg;"以上就是本文的全部内容,希望对大家的学习有所帮助。
相关文章:
- js解决Vue router-link绑定事件不生效的问题js大全
- jsJS的时间格式化和时间戳转换函数示例详解js大全
- jsecharts实现获取datazoom的起始值(包括x轴和y轴)js大全
- jsVue 解决父组件跳转子路由后当前导航active样式消失问题js大全
- js解决Echarts2竖直datazoom滑动后显示数据不全的问题js大全
- js解决echarts 一条柱状图显示两个值,类似进度条的问题js大全
- js解决echarts中横坐标值显示不全(自动隐藏)问题js大全
- js详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)js大全
- js解决Vue中的生命周期beforeDestory不触发的问题js大全
- jsvue中解决拖拽改变存在iframe的div大小时卡顿问题js大全