el-element照片墙,upload图片上传

el-element照片墙,upload图片上传,第1张

效果:

官方文档示例

注解:
list-type:上传之后,图片的显示类型,有三种text、picture、picture-card。

      --text类型显示为文本类型,预览时不能看到上传的图片
       -- picture类型为长图片类型,预览时能够看到上传的图片
      --picture-card类型是方图片类型,预览时能够看到上传的图片

limit 最大允许上传个数
accept 接受上传的文件类型(thumbnail-mode 模式下此参数无效)
action 必选参数,上传的地址(后端提供上传的服务器地址)
headers 设置上传的请求头部(一般填token、orgid等身份校验信息,一般是保存在本地存储)
file-list 上传的文件列表, 例如: [{name: ‘food.jpg’, url: ‘http://www.kaotop.com/file/tupian/20220516/xxx.jpg’}]
on-remove 文件列表移除文件时的钩子
on-success 文件上传成功时的钩子
on-preview 点击文件列表中已上传的文件时的钩子

  <el-col :span="23">
                <el-form-item label="图片:" prop="conTypeFiles">
                  <el-upload
                    ref="upload"
                    :class="{
                      'demo-httpRequestImg': conTypeFiles.length >= 3,
                    }"
                    list-type="picture-card"
                    :limit="3"
                    accept=".jpg,.jpeg,.png"
                    :action="uploadUrl"
                    :headers="headers"
                    :file-list="conTypeFiles"
                    :on-success="upLoadSuccess"
                    :on-remove="handleRemove"
                    :on-preview="handlePictureCardPreview"
                  >
                    <i class="el-icon-plus"></i>
                  </el-upload>
                  <el-dialog :visible.sync="dialogVisible">
                    <img width="100%" :src="dialogImageUrl" alt="" />
                  </el-dialog>
                </el-form-item>
              </el-col>

import { getToken } from ‘@/utils/auth’

 data() {
    return {
      // 图片上传成功d窗
      dialogVisible: false,
     // 图片显示地址
      dialogImageUrl: '',
     // 上传文件的fileList
      conTypeFiles: [],
    // 请求头参数
      headers: {
        Authorization: 'Bearer ' + getToken(),
      },
      // 上传的服务器地址
      uploadUrl: process.env.VUE_APP_BASE_API + '/file/upload',
      uploadImage: uploadImg,
}}

请求头getToken相关的代码,仅供参考
auth.js

const TokenKey = 'Admin-Token';

export function getToken() { 
  return sessionStorage.getItem(TokenKey)
}

在封装axios的request.js文件中,request请求拦截器中的相关代码

import { getToken } from '@/utils/auth'
// request拦截器
service.interceptors.request.use(
  config => {
    if (getToken()) {
      config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token
    }
    return config
  },
  error => {
    Promise.reject(error)
  }
)

上传相关事件

 /** 点击文件事件 -- 预览文件 */
    handlePictureCardPreview(file) {
      this.dialogVisible = true
      this.dialogImageUrl = file.url
    },
    /** 文件列表移除文件时的钩子 */
    handleRemove(file, fileList) {
      this.conTypeFiles = fileList
    },
    /** 上传文件 */
    upLoadSuccess(res, file, fileList) {
      // console.log('upload----', res, file, fileList)
      this.fileItem = res
      this.fileItem.annexType = 0
      this.fileItem.name = file.name    
      this.imgChange(res.data.fileName, res.data.fileUrl)
    },
    /** 图片地址转换 */
    imgChange(fileName, fileUrl) {
      this.$set(this.fileItem, 'url', fileUrl)   
      this.conTypeFiles.push(this.fileItem)
    },

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/940970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存