vue中使用axios post上传头像/图片并实时显示到页面

前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法。

html代码:

 <div id="myPhoto" v-show="personalPhoto">
        <div class="viewPhoto">
          <img src="" alt="" id="portrait"style="width: 300px;height: 300px" />
        </div>
        <div class="listBox">
          <dl>
            <dt>请上传图片</dt>
            <dd>
              <input type="file"id="saveImage" name="myphoto" >
            </dd>
          </dl>
        </div>
        <div class="save">
          <input type="button"  value="保存图片" @click="imageSubmit">
        </div>
      </div>

js代码:

//实时显示该图片在页面
 great(){
          document.getElementById(‘saveImage‘).onchange = function () {
          var imgFile = this.files[0];
         // this.file = event.target.files[0];
          var fr = new FileReader();
          fr.onload = function () {
            document.getElementById(‘portrait‘).src = fr.result;
          };
          fr.readAsDataURL(imgFile);
          }
        },

js代码部分说明:因为是在vue的methods方法中申明的函数,所以还需要在mounted 方法中使用this.great()挂载该方法。

图片上传部分的js代码:

imageSubmit(){
          let x = document.getElementById(‘saveImage‘).files[0];
          console.log(x);
          let params = new FormData() ; //创建一个form对象
          params.append(‘file‘,x,x.name);  //append 向form表单添加数据
          //添加请求头  通过form添加的图片和文件的格式必须是multipart/form-data
          let config = {
            headers:{‘Content-Type‘:‘multipart/form-data‘}
          };
          this.$axios.post("/user/image",params,config)
            .then(function(res){
              console.log(res);
              this.imageSave = res.data.image;
              sessionStorage.setItem(‘headImg‘,this.imageSave); //将图片保存,并能够在其他地方加载显示
              router.go(0);   //刷新页面,头像改变
            }.bind(this))
            .catch(function (error) {
              console.log(error);
            })
        }
      },

注:在后来的开发过程中发现,上传图片在上传服务器前在页面加载可以使用

var windowURL = window.URL || window.webkitURL;

原文地址:https://www.cnblogs.com/haonanZhang/p/9585004.html

时间: 2024-10-07 12:12:21

vue中使用axios post上传头像/图片并实时显示到页面的相关文章

上传base64图片并压缩

elementUI+react 布局 <Dialog title="充值" visible={ dialogVisible } onCancel={ () => this.setState({ dialogVisible: false }) } > <Dialog.Body> <Form labelWidth="120" ref={ e => {this.form=e} } model={ form } rules={ ru

总结今天项目上传头像中遇到的问题

由于公司需要,在做项目的时候,涉及到上传头像的部分,在php中,上传图片是一种很简单的事情.但是需要实现仿QQ,新浪需要对图片截取图片,就不那么容易,我采取的是canvas获取getDataURL,然后将数据通过ajax发送到后台服务器并保存到数据库中再通过img的src属性进行读取数据库中的数据,在展现出来,但是因为项目中有留言板,这里会出现一个问题,就是图片保存为base64数据虽然可以减小一次http请求但是重要的事情说三遍,只对于小图片可以,将大图片的getDataURL存取在数据库中,

file API+JCrop 选择、裁剪并上传头像

file API,直接读取本地文件,绕过了后台处理再返回前台的过程,使编程更简单.fileAPI和JCrop的结合使用上传头像. 1.html部分 <input id="demo" type="file" onchange="showPic();"/> <img id="avatar" src=""> 2.fileAPI预览图片(jquery) <script type=&qu

文件上传-------头像上传预览

这次来讲怎么来用代码完成头像更换 在上篇博客中也说了图片上传,但选择文件的之后,在网页上并没有显示这张图片,如果是要做头像的话,最好有头像预览 就像平时我们换QQ头像那样,一点图片就会出来文件预览,然后再选择一张图片,点击,页面就会换成你刚刚点击的那张图片 来看一下做法,先说第一个页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/D

刚完成的一个上传头像模块,望指点(含详细代码)

file API,直接读取本地文件.fileAPI和JCrop的结合使用上传头像. 1.html部分 <input id="demo" type="file" name="file" onchange="showPic();"/> <img id="avatar" src="" style="width:200px"> 2.fileAPI预览图

[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像

写在前面 最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册 [实战]MVC5+EF6+MySql企业网盘实战(3)——验证码 [实战]MVC5+EF6+MySql企业网盘实战(4)—

WebAPI实现移动端上传头像接口

测试时可以直接使用PostMan模拟发送请求 /// <summary> /// 手机端上传头像接口 /// </summary> /// <param name="LoginToken"></param> /// <param name="Base64String"></param> /// <returns></returns> [HttpPost] public a

相册选择头像或者拍照 上传头像以NSData 图片二进制格式 表单上传

一.点击头像图片 或者按钮 在相册选择照片返回img,网络上传头像要用data表单上传 (1)上传头像属性 // 图片二进制格式 表单上传 @property (nonatomic, strong) NSData *imageWithData; (2)头像点击事件 - (void)headImageEvent{ NSLog(@"上传头像"); [self selectPhotoAlbumWithSelectPhotoHandle:^(UIImage *img) { self.heade

Laravel中的日志与上传

PHP中的框架众多,我自己就接触了好几个.大学那会啥也不懂啥也不会,拿了一个ThinkPHP学了.也许有好多人吐槽TP,但是个人感觉不能说哪个框架好,哪个框架不好,再不好的框架你能把源码读上一遍,框架的设计思想理解了也能学到好多东西.况且有好多东西自己还不理解,所以认真学习一个框架这还是可以学不少东西的. 还是先说说Laravel吧,现在已经到5.2了.就我自己来说之前没有接触过laravel,但是学习过laravel之后感觉这个框架确实不错,并且老外用的不亦乐乎.他的开发社区还可以,文档比较齐