vue图片上传及预览


HTML部分
limit:上传数量限制
action:要提交的地址,因为我们自己提交,所以设为#
multiple:是否多选
auto-upload:是否自动上传
accept:接收文件类型
show-file-list:添加文件后,是否显示文件列表
更多属性请查询element-ui:https://element.eleme.cn/#/zh-CN/component/upload

<el-upload
   ref="upload"
   class="avatar-uploader"
   :limit="1"
   action="#"
   :multiple="false"
   :auto-upload="false"
    accept="image/jpeg,image/png"
    :on-change="OnChange"
    :show-file-list="false"
   >
  <i class="el-icon-plus avatar-uploader-icon" />
</el-upload>
<img v-if="avatar" class="svg-icon" :src="avatar" />
<button @clicl="onSubmit">上传</button>

js

data(){
  return {
    // 预览图片的地址
    avatar:"",
    // 用来保存需要上传的文件
    customImageFile:null
  }
},
 methods:{
  OnChange(file) {
    this.customImageFile = file;
    // 创建一个读取对象
    var reader = new FileReader();
    // 将文件转化为一个二进制字符串
    reader.readAsArrayBuffer(file.raw);
    // 监听文件读取完成
    reader.onload = e => {
    // 监听完成后,将二进制字符串转化为Blob对象,并且通过URL.createObjectURL创建一个url,指向该Blob对象
    let data = window.URL.createObjectURL(
    new Blob([e.target.result])
   );
    // 将生成的url赋值给需要预览的url
    this.avatar = data;
   };    
  },
  onSubmit() {
    // 创建一个FormData实例
    let formData = new FormData();
    // 将需要上传的文件添加到formDatas里
    formData.append("file", this.customImageFile.raw);
    // 最后发起请求
    axios.post("/url",data:formData)
  }
 }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM