前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用云开发进行图片上传

如何使用云开发进行图片上传

原创
作者头像
Doggy
修改2020-07-03 17:21:16
3K0
修改2020-07-03 17:21:16
举报

前言

云开发,相信大家都不陌生,在我们的日常开发中,总少不了需要把图片进行上传的应用场景。

本文将介绍如何使用云开发进行图片上传并部署到云开发静态网站托管。

初始化

首先我们要引入tcb-js-sdk

tcb-js-sdk 让您可以在 Web 端(如 PC Web 页面、微信公众平台 H5 等)使用 JavaScript 访问 Cloudbase 服务和资源。

方法一:通过CDN引入
代码语言:txt
复制
<script src="//imgcache.qq.com/qcloud/tcbjs/${version}/tcb.js"></script> 
<script>
  const app = tcb.init({
    env: 'your-env-id'  //填写云环境ID
  });
const auth = app.auth();
</script>

最新的版本号 version 可以前往 NPM 查看。

因我们需要本地调试,所以示例代码使用了匿名登录云开发(更多的登录方式请查阅 登录认证),需在腾讯云云开发控制台打开匿名登录权限以及把本地调试域名添加进安全域名

方法二:通过包管理引入
代码语言:txt
复制
#npm
npm install tcb-js-sdk -S
# yarn
yarn add tcb-js-sdk

紧接着在项目源码中引入模块

代码语言:txt
复制
import tcb from 'tcb-js-sdk';

const app = tcb.init({
  env: 'your-env-id'
})

登录云开发

因我们需要本地调试,所以示例代码使用了匿名登录云开发(更多可查看 登录认证 以及 安全规则),需在腾讯云云开发控制台打开匿名登录权限以及把本地调试域名添加进安全域名

代码语言:txt
复制
...

auth.anonymousAuthProvider() 
.signIn()   //AnonymousAuthProvider.signIn() 匿名登录云开发,具体可根据业务需求调整
.then(() => {
    console.log("登陆成功") //登录成功
}).catch(err => {
    console.log("登录失败",err) //登录失败
})

...

Body部分

示例用了一个input用于上传file(设置好accept),最后写两个div分别用于上传按钮与预览图片,稍用CSS了美化一下

代码语言:txt
复制
<body>
    <div id="upload" ><input id="pic"  type="file" accept="image/png,image/jpg,image/jpeg" name="pic" />
+</div>
    <div id="summit" onclick="upload()">上传</div>
    <div id="preview"></div>
</body>

JS部分

获取File
代码语言:txt
复制
var fileinput = document.getElementById('pic'),
    preview = document.getElementById('preview');
fileinput.addEventListener('change',function(){//监听change事件
  if (!fileinput.value) {//有无文件判断
        console.log('no pic');
        return;
    }
    else{
      console.log('success')
    }
  var file = fileinput.files[0];//获取文件
  if (file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/jpg') {//判断文件是否符合img
        alert('仅支持jpeg和png');
        fileinput.value = '';//如不符合则清空value以及backgroundImage
        preview.style.backgroundImage = 'url(#)';
        return;
    }else{
      var reader = new FileReader();
      reader.onload = function(e){
      var data = e.target.result;
      preview.style.backgroundImage = 'url(' + data + ')';
  }
      reader.readAsDataURL(file);
      console.log(file.name)
    }

})
使用uploadFile API上传图片到云储存
代码语言:txt
复制
function upload(){
    app
  .uploadFile({
    // 云端路径
    cloudPath: document.getElementById('pic').files[0].name,
    // 需要上传的文件,File 类型
    filePath: document.getElementById('pic').files[0]
  })
  .then(res => {
    // 返回文件 ID
    console.log(res.fileID)
    console.log('上传成功')
  })
}
使用getTempFileURL API获取图片下载地址
代码语言:txt
复制
...  
  app
  .getTempFileURL({
    fileList: [res.fileID]//要下载的文件 ID 组成的数组 本示例填写为上面代码的文件id
  })
  .then(res => {
    res.fileList.forEach((el) => {
      if(el.code === 'SUCCESS') {
        console.log(el.tempFileURL)//打印下载地址
      } else {
        console.log('获取地址失败')//获取地址失败
      }
    })
  });
}
...

示例效果

部署到云开发静态网站托管

开通静态网页托管能力

进入控制台/环境/静态网站选项,点击开始使用按钮即可开通静态网站服务,开通过程需要 3~5 分钟。

使用Cloudbase Framework进行部署

安装Cloudbase CLI Beta版

代码语言:txt
复制
npm install -g @cloudbase/cli@beta

登录

代码语言:txt
复制
cloudbase login

在工程目录下创建项目配置

代码语言:txt
复制
cloudbase init --without-template

自动检测生成插件配置文件并部署(途中需要选择云环境ID,无云环境会跳转创建)

代码语言:txt
复制
cloudbase framework:deploy

初次部署会询问根目录地址以及是否保存配置,按照需求确认即可,部署完成后会出现访问地址。

总结

本文示例源码已上传到GitHub仓库

本文使用Cloudbase Framework进行部署,更多的使用小技巧可查看GitHub仓库

本文示例介绍如何使用云开发上传图片至云储存,更多的使用还可以使用云开发拓展能力去进行图像安全审核、图像标签、图像处理等。更好玩云开发技巧、实例可关注微信公众号--腾讯云云开发 以及访问腾讯云云开发官网

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 初始化
    • 方法一:通过CDN引入
      • 方法二:通过包管理引入
      • 登录云开发
      • Body部分
      • JS部分
        • 获取File
          • 使用uploadFile API上传图片到云储存
            • 使用getTempFileURL API获取图片下载地址
            • 示例效果
            • 部署到云开发静态网站托管
              • 开通静态网页托管能力
                • 使用Cloudbase Framework进行部署
                • 总结
                相关产品与服务
                静态网站托管
                静态网站托管(Website Hosting,WH)是由云开发提供的便捷、稳定、高拓展性的托管服务,您无需自建服务器,即可一键部署网站应用,将静态网站发布到全网节点,轻松为您的业务增添稳定、高并发、快速访问等能力。此外,您还可以结合云开发的云函数、数据库等能力,将静态网站扩展为带有后台服务端的全栈网站,让您可极速提供网站应用。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档