vue3+ts+elementPlus上传图片并回显

<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:post:add']">添加图片</el-button >

上传弹窗

 <el-form-item label="上传图片" prop="imagePath">

          <div style="display: flex; flex-direction: column; width: 100%">

            <el-upload

              class="upload-demo"

              action="#"

              :on-change="uploadCoverImage"

              :before-upload="beforeUploadCover"

              :auto-upload="false"

              multiple

              :show-file-list="false"

            >

              <div

                v-if="form.imagePath"

                class="image-box"

                :style="{ backgroundImage: 'url( ' + imgUrl + form.imagePath + ')' }"

              ></div>

              <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>

              <!-- <el-button size="small" type="primary">点击上传</el-button> -->

            </el-upload>

          </div>

        </el-form-item>

<script setup name="Post">

import {

  listWebCarousel,

  addWebCarousel,

  putWebCarousel,

  delWebCarousel,

  getSingleWebCarousel,

  listProduct

} from '@/api/carousel/carousel'

import { uploadsingleFile } from '@/api/common'

import { proNewTree } from '@/api/system/cpglnew'

const postList = ref([])

const open = ref(false)

const loading = ref(true)

const showSearch = ref(true)

const ids = ref([])

const single = ref(true)

const multiple = ref(true)

const total = ref(0)

const title = ref('')

const treeData = ref([]) // 关联产品列表

const selectProductRef = ref()

const defaultProps = {

  children: 'children',

  label: 'name'

}

const data = reactive({

  form: {},

  queryParams: {

    pageNum: 1,

    pageSize: 10

    // imagePath: undefined,

    // postName: undefined,

    // status: undefined

  },

  rules: {

    productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],

    sortNum: [{ required: true, message: '排序号不能为空', trigger: 'blur' }],

    state: [{ required: true, message: '状态不能为空', trigger: 'blur' }],

    imagePath: [{ required: true, message: '图片不能为空', trigger: 'change' }]

  }

})

const imgUrl = import.meta.env.VITE_APP_BASE_API

const { queryParams, form, rules } = toRefs(data)

/** 上传文件 */

function beforeUploadCover() {}

function uploadCoverImage(file, fileList) {

  const formData = new FormData()

  formData.append('file', file.raw)

  uploadsingleFile(formData)

    .then((res) => {

      data.form.imagePath = res.fileName

    })

    .catch((err) => {})

}

</script>

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3和Element Plus都是现代化的前端开发框架,可以很方便地实现图片上传的功能。 首先,我们需要在Vue3项目中安装Element Plus。可以使用以下命令安装Element Plus: ``` npm install element-plus --save ``` 然后,在Vue3组件中引入Element Plus的上传组件,并在模板中使用它。我们需要设置一些参数来定义上传的行为,比如上传文件的类型、大小限制等。 ```html <template> <div> <el-upload action="/api/upload" :headers="headers" :on-success="onSuccess" :before-upload="beforeUpload" :file-list="fileList" :limit="limit" :accept="accept" :show-file-list="false" > <el-button>点击上传图片</el-button> </el-upload> <el-image v-if="imageUrl" :src="imageUrl"></el-image> </div> </template> ``` 在这个示例中,我们使用`el-upload`组件来实现文件上传。`action`属性指定了上传文件的接口地址,`headers`属性可以设置请求的头部信息。`on-success`是上传成功后的回调函数,`before-upload`可以在上传前进行一些验证操作。 接下来,我们需要在Vue3组件的`<script>`标签中完成一些逻辑处理。 ```javascript <script> import { ref } from 'vue'; export default { data() { return { fileList: [], // 上传文件列表 imageUrl: '', // 预览图片地址 limit: 1, // 最大上传数量 accept: 'image/*', // 接受的文件类型 headers: { Authorization: 'Bearer token', // 设置请求头部信息 }, }; }, methods: { beforeUpload(file) { const isLt2M = file.size / 1024 / 1024 < 2; // 判断文件大小是否小于2MB if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB!'); return false; } return true; }, onSuccess(response) { // 上传成功后的回调函数 this.fileList.push(response.file); // 将文件添加到上传文件列表 this.imageUrl = response.imageUrl; // 设置预览图片地址 }, }, }; </script> ``` 在这个示例中,我们使用了Vue3中的`ref`函数来定义了一些响应式数据,比如上传文件列表和预览图片地址。`beforeUpload`函数用来验证文件的大小是否符合要求,在这个示例中我们限制文件大小不能超过2MB。`onSuccess`是上传成功后的回调函数,我们将文件添加到上传文件列表中,并设置预览图片地址。 最后,我们可以根据实际需求来使用这个上传图片的组件,并且通过访问`fileList`和`imageUrl`来对上传的图片进行处理。 这就是使用Vue3和Element Plus实现图片上传的基本步骤,通过设置参数和回调函数,我们可以很方便地完成图片上传的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值