赞
踩
本来打算做一个全部都是前端完成的资源上传到七牛云的demo,但是需要获取token,经历了九九八十一难,最终还是选择放弃,token从后端获取(springboot)。如果你们有前端直接能解决的麻烦记得私我哦!!!
先看看文档:
element ui :https://element.eleme.cn/#/zh-CN/component/upload
七牛云:https://developer.qiniu.com/kodo/1283/javascript
npm install qiniu-js
<template> <div> <el-upload class="upload-demo" action="https://upload.qiniup.com" :on-remove="handleRemove" :file-list="fileList" list-type="picture" :http-request="customUpload" accept="image/jpeg,image/gif,image/png"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png/gif文件,且不超过2M</div> </el-upload> </div> </template> <script> //这里我下面会提供给,其实就是一个后端接口,后面会说怎么获取tonken的,根据自己的需求来 import { qiniuTonken } from "@/js/qiniu_token" export default { name: "photoList", data() { return { fileList: [], } }, created() { this.getQiniuToken() }, methods: { getQiniuToken() { qiniuTonken().then(res => { this.yourQiniuUploadToken = res.data.data }) }, //移除图片的处理 handleRemove(file, fileList) { console.log(file, fileList); }, beforeUpload(file) { // 在上传之前的逻辑,可以做一些检查或者其他处理 return true; // 返回true允许上传,返回false阻止上传 }, customUpload(file) { const qiniu = require('qiniu-js'); // 自定义上传方法,使用qiniu-js库进行上传 const date = new Date(); const year = date.getFullYear(); const month = date.getMonth() + 1; const directory = 'sm-frontend/' + year + '/' + month + '/'; const fileName = file.file.name; const key = directory + fileName; const observable = qiniu.upload(file.file, key, this.yourQiniuUploadToken); return observable.subscribe({ complete(res) { // 上传完成时的回调 const imageUrls = 'http://***/' + res.key const file_data = { name: fileName, url: imageUrls, } _this.fileList.push(file_data) // 将成功状态标记添加到文件对象中。后续测试发现不加也可以,哈哈哈。是之前直接使用this的原因。这里就不去掉了。 const uploadedFileIndex = _this.fileList.findIndex(file => file.url === imageUrls); //使用了 findIndex 方法来找到对应文件的索引,然后将状态标记为成功。请尝试修改代码并重新测试上传功能 if (uploadedFileIndex !== -1) { console.log(uploadedFileIndex) this.fileList[uploadedFileIndex].status = 'success'; } }, next(res) { // 上传过程中的回调,如果需要可以在这里处理上传进度等信息 }, error(err) { // 上传出错时的回调 }, }); } } } </script>
JS
技术:springboot、maven…
<!-- 七牛云 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.7</version>
</dependency>
package com.admin.controller.admin.email; import com.common.util.QiniuUtil; import com.system.constant.HTTPStatus; import com.system.response.Result; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * @Classname QiniuController * @Date 2023/8/8 13:32 * @Created ZFC */ @RestController @RequestMapping("/sys/qiniu") public class QiniuController { @GetMapping("/getUpToken") public Result getUpToken(@RequestParam(value = "key", required = false) String key){ return new Result().setCode(HTTPStatus.SUCCESS).setData(QiniuUtil.getToken(key)); } }
import com.qiniu.util.Auth;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class QiniuUtil {
public static String getToken(String key) {
Auth auth = Auth.create(***ACCESS_KEY***, ***SECRET_KEY***);
return auth.uploadToken(***BUCKET***, key);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。