全栈06 上传图片

使用koa2将图片上传到七牛云,七牛文件上传分为客户端上传(主要是指网页端和移动端等面向终端用户的场景)和服务端上传两种场景。这里使用的是客户端上传

安装七牛

首先安装七牛SDK

npm install qiniu -S

准备好七牛账号下有效的Access Key和Secret Key,可以通过七牛云开发者后台获取

服务器使用NodeJS SDK创建上传凭证

客户端(移动端或者Web端)上传文件的时候,需要从客户自己的业务服务器获取上传凭证,而这些上传凭证是通过服务端的SDK来生成的,然后通过客户自己的业务API分发给客户端使用。

创建各种上传凭证之前,我们需要定义好其中鉴权对象mac:

var accessKey = 'your access key';
var secretKey = 'your secret key';
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);

创建上传凭证:

var options = {
  scope: bucket,
  expires: 7200
};
var putPolicy = new qiniu.rs.PutPolicy(options);
var uploadToken=putPolicy.uploadToken(mac);

bucket就是七牛存储空间名

客户端每次上传文件时想自己的服务器请求授权即可:

export async function getUploadCertificate(ctx) {
  ctx.body = {
    success: true,
    retDsc: '获取凭证成功',
    ret: {
      uploadToken
    }
  };
}

客户端上传图片

进行上传图片:

async submitAll() {
  // 获取上传token
  const res = await this.$http.get(API.exampleAPI.upload);
  const uploadToken = res.data.ret.uploadToken;
  // 参数
  const Qiniu_UploadUrl = 'http://up-z1.qiniup.com';
  const domain = 'http://design.oldzhou.cn';
  // 通过formData上传图片
  let formData = new FormData();
  formData.append('token', uploadToken);
  formData.append('file', this.previewImages[0].file);
  this.$http.post(Qiniu_UploadUrl, formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    withCredentials: false
  }).then(res = > {
      const src = `${domain}/${res.key}`
        });
      }
    },

要注意的是,在上传图片的时候,必须获取由自己服务器生成的token(也可以通过客户端来生成,有对应的SDK),并且需要将axios的headers设置为'Content-Type': 'multipart/form-data',且需要将withCredentials设为false,来解决跨域的问题。

七牛云绑定域名

对七牛云绑定一个二级域名,用来访问上传的图片:

在存储空间pe-idea中找到域名绑定栏目点击添加,进行加速域名配置:

域名类型默认
加速域名design.qiniudemo.com
覆盖范围默认(只在国内访问)
通信协议默认(HTTP)
使用场景默认(图片小文件)
源站配置默认(存储空间 pe-idea)

创建成功后,1-2小时会处理完成,最多不超过12小时。这时候会得到CNAME:design.oldzhou.cn.qiniudns.com

同时需要进入到购买域名时的网站,找到域名服务中域名管理,进入oldzhou.cn一级域名,添加解析,主机记录就是二级域名,记录类型选择CNAME记录,记录值填入刚才得到的CNAME,保存后就OK了

经过一段时间的等待后,绑定CNAME成功。

参考

阿里云盘是阿里巴巴集团旗下的云存储服务,提供了稳定可靠的数据存储和备份解决方案。Python全栈是一个广义的概念,指的是在Python语言技术栈上独立负责项目的开发、设计、交互、后端等多个方面的开发人员。 阿里云盘作为一种云存储服务,可以用于存储、备份和共享各类数据文件,包括文档、图片、音频、视频等。它具有高可靠性和弹性扩展能力,可以将数据存储在云端,保证数据的安全性和可访问性。阿里云盘提供了丰富的API和SDK,方便开发者使用Python等编程语言进行集成和使用。 Python全栈开发指的是一个开发人员具备从前端到后端的全部技能,能够独立完成一个完整的项目开发。在Python全栈开发中,开发人员需要熟悉前端开发技术(如HTML、CSS、JavaScript等),能够创建用户友好的界面和交互;同时也需要掌握后端开发技术(如Django、Flask等Python框架),能够构建稳定高效的后端服务。此外,还需要了解数据库设计与管理、网络通信、安全性等方面的知识。 将阿里云盘与Python全栈结合,可以实现更加丰富的功能和扩展性。开发人员可以利用Python全栈技术,基于阿里云盘的API和SDK,开发出更加强大的数据存储、备份和共享应用。例如,可以开发一个基于Web的文件管理系统,用户可以通过界面上传、下载、删除、修改文件;还可以开发一个基于云盘的自动备份工具,将用户指定的文件定期备份到阿里云盘等。 总之,阿里云盘和Python全栈都是现代技术领域的重要组成部分,它们的结合将带来更好的数据存储与应用开发体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值