前端怎么生成七牛的token,并且上传图片到七牛
时间: 2024-04-09 16:32:02 浏览: 212
小程序和七牛云交互工具包(生成token并上传)
前端生成七牛云的上传凭证(token)一般需要结合后端来完成,因为生成凭证需要使用七牛云的密钥,为了安全起见,密钥一般保存在后端,前端通过与后端的交互获取凭证。
以下是一个前端与后端结合生成七牛云上传凭证并上传图片的示例:
1. 后端代码(Node.js):
```javascript
const qiniu = require('qiniu');
const accessKey = 'YOUR_QINIU_ACCESS_KEY';
const secretKey = 'YOUR_QINIU_SECRET_KEY';
function generateQiniuToken() {
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
const options = {
scope: 'YOUR_QINIU_BUCKET_NAME',
expires: 3600, // 凭证有效时间,单位:秒
};
const putPolicy = new qiniu.rs.PutPolicy(options);
const uploadToken = putPolicy.uploadToken(mac);
return uploadToken;
}
// 在路由处理函数中返回生成的上传凭证给前端
app.get('/qiniu/token', (req, res) => {
const token = generateQiniuToken();
res.json({ token });
});
```
上述代码使用了qiniu-sdk库来生成七牛云上传凭证。你需要替换YOUR_QINIU_ACCESS_KEY、YOUR_QINIU_SECRET_KEY和YOUR_QINIU_BUCKET_NAME为你自己的七牛云密钥和存储空间名称。
2. 前端代码(Vue.js):
```javascript
import axios from 'axios';
methods: {
uploadImage() {
uni.chooseImage({
success: (res) => {
const tempFilePaths = res.tempFilePaths;
this.getQiniuTokenAndUpload(tempFilePaths[0]);
},
});
},
getQiniuTokenAndUpload(filePath) {
axios.get('/qiniu/token') // 向后端请求获取上传凭证
.then((response) => {
const token = response.data.token;
this.uploadToQiniu(token, filePath);
})
.catch((error) => {
console.log(error);
});
},
uploadToQiniu(token, filePath) {
const url = 'https://upload.qiniup.com';
const key = Date.now() + '.jpg'; // 设置文件名,这里使用当前时间戳作为文件名
uni.uploadFile({
url,
filePath,
name: 'file',
formData: {
token,
key,
},
success: (res) => {
// 上传成功,处理返回的数据
console.log(res.data);
},
fail: (err) => {
// 上传失败,处理错误信息
console.log(err);
},
});
},
}
```
上述代码使用了axios库发送GET请求获取后端生成的上传凭证,然后调用uni.uploadFile方法将图片上传到七牛云存储。
请确保替换YOUR_QINIU_ACCESS_KEY、YOUR_QINIU_SECRET_KEY和YOUR_QINIU_BUCKET_NAME为你自己的七牛云密钥和存储空间名称。同时,你还需要根据实际情况修改后端路由路径和前端请求路径。
这样,当用户点击按钮时,前端会通过后端获取七牛云的上传凭证,并将选择的图片上传到七牛云存储中。
阅读全文