elementUI el-upload组件直接上传到七牛云(亲测可用)

代码实现:

<el-upload action="https://upload.qiniup.com" :show-file-list="false" :on-success="handleUploadSuccess"
  :before-upload="beforeUpload" :on-progress="handleProgress" :data="uploadData">
  <span v-show="!scope.row.imageSrc">上传</span>
  <img v-show="scope.row.imageSrc" :src="scope.row.imageSrc" style="width: 20px;height: 32px;">
</el-upload>
import { getUploadToken } from "@/api/common/common";

data(){
	return {
		uploadData: { key: "", token: "" },
	}
},

methods:{
	//款式图片 上传成功回调
	handleUploadSuccess(res) {
	  if (res.key) {
	    this.imageSrc="https://xxxx.com/" + res.key;	// https://xxxx.com 为回显图片的地址,在七牛上配置的映射地址
	  } else {
	    this.$message({
	      type: "error",
	      message: res.msg,
	    });
	  }
	},
	async beforeUpload(file) {
	  try {
	  	// 通过请求后端获取七牛token
	    const res = await getUploadToken();
	    if (res.data.code == 200) {
	      this.uploadData.key = file.uid + file.name;
	      this.uploadData.token = res.data.data;
	    } else {
	      this.uploadData.key = "";
	      this.uploadData.token = "";
	    }

	    const isJPG = file.type === "image/jpeg";
	    const isPNG = file.type === "image/png";
	
	    if (!isJPG && !isPNG) {
	      this.$message.error("上传图片只能是 JPG/JPEG/PNG 格式!");
	      return Promise.reject();
	    }
	    
	    return isJPG || isPNG;
	  } catch (error) {
	    console.log(error);
	    this.$message.error("上传失败");
	  }
	},
}

注意点:

  1. action=“https://upload.qiniup.com” 这里的七牛地址需要根据自己用的七牛服务器存储区域所决定,不一定是写的和我一样的地址,具体参考官网文档:七牛云存储区域
  2. getUploadToken() 接口是后端给的获取七牛token的,具体后端会通过AccessKey,SecretKey和Bucket去获取,前端只需要调用接口拿到token即可
  3. this.uploadData.key = file.uid + file.name; 这里key是用返回的file参数里的uid和name拼接而成作为唯一key的,不单纯用name作为key,是为了防止上传多张相同的文件时导致重复覆盖,故使用uid和name的结合体作为唯一key
  4. uploadData: { key: “”, token: “” } 这个是将拿到的token以及自己定义的key通过data的形式和上传文件一起作为参数传过去
  5. this.imageSrc= “https://xxxx.com/” + res.key; 上传成功后回显这里 https://xxxx.com 这个时七牛云上自己配置的回显地址,每个人都不同,具体根据自己七牛云配置即可
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
el-upload是一个用于上传图片的组件,而七牛云是一种云存储服务。你可以通过将这两者结合使用,实现将图片上传七牛云的功能。 具体的步骤如下: 1. 首先,你需要从后台获取七牛云的token,这个token将用于上传图片到七牛云。你可以通过调用后端提供的接口,传入AccessKey、SecretKey和Bucket等信息来获取token。 2. 在el-upload组件中,你需要配置action属性为https://upload.qiniup.com,这是七牛云存储区域的上传地址。不同的七牛云存储区域可能会有不同的地址,请根据自己使用的七牛云服务器存储区域来确定具体的地址。 3. 配置el-upload组件的其他参数,如class、list-type、file-list等。这些参数可以根据自己的需求进行设置。 4. 在el-upload组件中,你可以监听onChange事件,以便在图片上传完成后执行相应的操作。比如,你可以在该事件中获取返回的图片路径,并将其放入el-upload组件中进行显示。 5. 当图片上传成功后,你可以在el-upload组件中使用on-success事件来回显上传的图片。你需要将回显地址配置为你在七牛云上配置的回显地址,具体地址可以参考七牛云的官方文档。 6. 最后,你可以根据需要配置其他的el-upload组件参数,如before-upload、on-remove等。 总结起来,通过el-upload组件七牛云的配合,你可以实现在前端上传图片到七牛云,并在上传成功后进行回显操作。详情可以参考提供的引用内容中的代码和注意点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue中el-upload上传图片到七牛的示例代码](https://download.csdn.net/download/weixin_38675465/13977470)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [elementUI el-upload组件直接上传七牛云(亲测可用)](https://blog.csdn.net/DLGDark/article/details/126763197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [el-upload上传文件到七牛云](https://blog.csdn.net/qq_42157868/article/details/107286616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值