vue3使用七牛云实现el-upload上传图片功能

1.前端请求后端,获取上传七牛云的token

2.将后端返回的token放入提交的表单中

3.设置el-upload中的上传地址,即action(七牛云对应的服务器地址) action=“http(s)😕/up-z2.qiniup.com”

4.选择图片,进行自动上传–>:auto-upload=‘true’

5.上传成功的处理,拼接可访问图片的路径,自己的域名(30天有效)+ res.key

<template>
  <el-upload v-model:file-list="fileList" action="http://upload-z2.qiniup.com" list-type="picture-card"
    :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :auto-upload="true"
    :before-upload="beforeAvatarUpload" :on-success="handleAvatarSuccess" :data="uploadData">
    <el-icon>
      <Plus />
    </el-icon>
  </el-upload>

  <el-dialog v-model="dialogVisible">
    <img w-full :src="dialogImageUrl" alt="Preview Image" />
  </el-dialog>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import { ElMessage, ElUpload } from 'element-plus'
import type { UploadProps, UploadUserFile } from 'element-plus'
import store from '@/store'

// 图片列表
const fileList: any = ref<UploadUserFile[]>([
  // {
  //   name: 'food.jpeg',
  //   url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
  // },
])
// url列表
const picURL:any = ref([])

const dialogImageUrl = ref('')
const dialogVisible = ref(false)

const uploadData: any = ref({
  token: store.getters.uploadToken,
  // token: '4_aYuuFk0q5GAyaqtBNzSV-UvNG2knaHD88zr2cf:aS203tsgXrGNADSNTcLcRHOecTc=:eyJzY29wZSI6ImVjb20iLCJkZWFkbGluZSI6MTY3ODc2NTU2MX0=',
  key: null
})

// 删除图片
const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
  console.log(uploadFile, uploadFiles)
  console.log(fileList.value, 111);
}

// 放大
const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
  dialogImageUrl.value = uploadFile.url!
  dialogVisible.value = true
}
// 上传之前
const beforeAvatarUpload = (file: any) => {
  const isLt2M = file.size / 1024 / 1024 < 5;
  const fileName = file.name;

  // if (!isJPG) {
  //   ElMessage.error('头像必须是JPG格式!')
  // }
  if (!isLt2M) {
    ElMessage.error('病例图片必须小于5MB!')
  }
  uploadData.value.key = fileName;
  // return isJPG && isLt2M
  return isLt2M
}

// 上传成功
const handleAvatarSuccess = (res: any, file: any) => {
  picURL.value.push({
    name: uploadData.value.key,
    url: `${`http://qiniu.ecom20200909.com/${uploadData.value.key}`}`
  });
  console.log(fileList.value, '图片列表');
  console.log(picURL.value, 'url列表');
}
</script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前端Vue项目中,使用`el-upload`组件可以实现图片上传功能。以下是一个简单的实现步骤: 1. 在Vue组件中引入`el-upload`组件: ``` <template> <el-upload class="upload-demo" action="/api/upload" :on-success="handleSuccess" :file-list="fileList" :limit="3" :multiple="true" :show-file-list="false" :auto-upload="false"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过3个文件</div> </el-upload> </template> ``` 在上述代码中,`action`属性指定了上传文件的后端接口地址,`:on-success`属性指定了上传成功后的回调函数,`:file-list`属性指定了上传文件列表,`:limit`属性指定了上传文件的数量限制,`:multiple`属性指定了是否支持多选,`:show-file-list`属性指定了是否显示已上传文件列表,`:auto-upload`属性指定了是否自动上传。 2. 实现上传文件的回调函数: ``` methods: { handleSuccess(res, file) { console.log(res); // 后端返回的上传结果 console.log(file); // 上传的文件对象 // 将上传成功的文件添加到文件列表中 this.fileList.push({ name: file.name, url: res.data.url }); } } ``` 在上述代码中,`handleSuccess`函数接收两个参数:`res`表示后端返回的上传结果,`file`表示上传的文件对象。在函数中,我们将上传成功的文件添加到文件列表中。 3. 后端接口实现: 在后端Flask应用中,可以使用`Flask-Uploads`等第三方库来实现文件上传功能。以下是一个简单的实现代码: ``` from flask import Flask, request, jsonify from flask_uploads import UploadSet, IMAGES, configure_uploads app = Flask(__name__) # 配置文件上传 app.config['UPLOADED_PHOTOS_DEST'] = 'uploads/images' photos = UploadSet('photos', IMAGES) configure_uploads(app, photos) @app.route('/api/upload', methods=['POST']) def upload(): file = request.files['file'] if file: filename = photos.save(file) url = photos.url(filename) return jsonify({'code': 0, 'msg': '上传成功', 'data': {'url': url}}) else: return jsonify({'code': -1, 'msg': '上传失败'}) ``` 在上述代码中,`UPLOADED_PHOTOS_DEST`配置项指定了文件上传后的保存路径,`photos`对象表示上传文件的集合,`upload`函数实现了上传文件的功能。在函数中,我们首先获取上传的文件对象,然后使用`photos.save`将文件保存到指定路径,并使用`photos.url`获取文件的访问URL,最后返回上传结果。 以上就是使用`el-upload`组件实现图片上传功能的简单实现步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_ugust__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值