Vue+NodeJS上传图片到腾讯云Cos

这篇具有很好参考价值的文章主要介绍了Vue+NodeJS上传图片到腾讯云Cos。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.前端Vue

1.选择图片
--HTML
<input type="file" accept="image/*" @change="handleFileChange">
<el-button  size="large" @click="changeAvatar">上传头像</el-button>
//选择图片
function handleFileChange(event){

    const selectedFile = event.target.files[0];
   
    if (!selectedFile) {
      return;
    }
    //定义图片可传入的类型
    const allowedTypes = ['image/jpeg', 'image/png','image/jpg'];
    //定义图片的最大尺寸--字节
    const maxSize = 1000000; 

    if (!allowedTypes.includes(selectedFile.type)) {
      return;
    }

    if (selectedFile.size > maxSize) {
      return;
    }

}
2.实现上传前的本地预览
--HTML
<img  style="border-radius: 50%;"  :src="DataUrl" alt="">
//定义数据
const DataUrl=ref('')

function handleFileChange(event){
//图片大小,类型验证
......

//读取数据
const reader=new FileReader()
reader.onload=e=>{
  DataUrl.value=e.target.result
 }
reader.readAsDataURL(selectedFile)

}

此时读取后得到的是

Vue+NodeJS上传图片到腾讯云Cos,vue.js,javascript,前端,node.js,腾讯云

后面包含base64,将base64上传到后端进行处理 ,如果图片文件稍大,后端就会出现请求体过长的错误.不适合大文件上传.我们这里就只用它来做本地预览

3.获取上传到后端必须的数据
//定义数据
const imgType=ref('')
const code=ref({}) 

function handleFileChange(event){
//图片大小,类型验证
......

//得到图片的类型后缀
const index=selectedFile.type.indexOf('/')
imgType.value=selectedFile.type.slice(index+1)
//包括开始,不包括结尾

//selectedFile--图片对象
code.value=selectedFile

//读取数据
...

}
4.上传图片
async function changeAvatar(){

    const formData = new FormData();
    formData.append('image',code.value); //图片对象
    formData.append('fileType', imgType.value); // 添加文件类型信息

   await axios.post('http://127.0.0.1:3000/upload',formData)
    .then((response) => {
    // 处理后端的响应
    console.log('上传成功',response );
  }).catch((error) => {
    // 处理上传失败的情况
    console.error('上传失败', error);
  });
}

二.后端

后续需要的第三方包

npm i express

npm i cos-nodejs-sdk-v5

npm i cors

npm i multer

npm i dotenv

    "cors": "^2.8.5",
    "cos-nodejs-sdk-v5": "^2.12.4",
    "dotenv": "^16.3.1",
    "express": "^4.18.2",
    "multer": "^1.4.5-lts.1",

1.express服务搭建
const express = require('express')			
const cors = require('cors');	
const multer = require('multer'); // 处理文件上传的中间件		
const app = express()
app.use(cors()) //跨域处理


// 配置文件上传的存储路径和文件名
const storage = multer.memoryStorage(); // 在内存中处理文件上传
const upload = multer({ storage });

//COS图片上传请求
router.post('/upload', upload.single('image'), async(req, res) => {

  const uploadedImage = req.file;
  const fileType = req.body.fileType; // 从请求体中获取文件类型

  if (!uploadedImage) {
    return res.status(400).send('没有上传文件');
  }

  const avatar_url=await uploadImage(req.file,fileType)

  res.send({data:{avatar_url}})
});


  app.listen(3000, () => {
      console.log('server running ...');
  })
2.上传到腾讯云Cos
const COS = require('cos-nodejs-sdk-v5')
const {SecretId,SecretKey,Bucket,Region}=require('../config')


const cos = new COS({
  SecretId,
  SecretKey,
})

const path="avatar/"  //腾讯云Cos桶下的文件夹
 
async function uploadImage(img,type) {
    try {
      const data = await cos.putObject({
        Bucket, // 存储桶名称
        Region, // 存储桶所在地域
        Key:path + new Date().getTime()+`.${type}`, // 可以理解为图片存储的路径+名称(唯一) 例如:indexImages/1670050961361.png
        Body: img.buffer, // 上传文件的内容,可以为 FileStream、字符串、Buffer, 我们这里接收二进制Buffer
        onProgress: function (progressData) {
          console.log(progressData)
        }
      })
      const imageUrl = `https://${data.Location}`
      return imageUrl
    }
    catch (error) {
        console.log(error)
      }
  
    }

module.exports = uploadImage
3.配置文件

新建一个.env文件

# COS
SecretId='密钥ID'
SecretKey='密钥'
Bucket='桶名称'
Region='所在地域'

新建一个config.js文件

const dotenv = require("dotenv")
 
dotenv.config()
 
module.exports = {
  SecretId,
  SecretKey,
  Bucket,
  Region,
} = process.env

到此Vue上传图片到COS就完成了,后续可以将图片链接存到数据库进行操作.代码有错误的地方欢迎指正.如果使用出现错误也可留言.同时也要注意你的COS权限开放问题文章来源地址https://www.toymoban.com/news/detail-703565.html

到了这里,关于Vue+NodeJS上传图片到腾讯云Cos的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.js: express + MySQL + Vue实现图片上传

            前段时间用Node.js: express + MySQL + Vue + element组件做了一个小项目,记录一下图片上传的实现。         将图片存入数据库有两种方法:                 1,将图片以二进制流的方式存入数据库(数据库搬家容易,比较安全,但数据库空间的消耗大,访问会比较缓慢)

    2024年02月07日
    浏览(85)
  • SpringBoot整合腾讯云COS(上传)

    腾讯云COS文档:对象存储 快速入门-SDK 文档-文档中心-腾讯云 (tencent.com) 开通腾讯云COS 创建存储桶 请求域名可做拼接文件访问URL使用 然后下一步即可 上传 文件时需要以上红框参数 导入依赖 配置文件yml 配置类 Controller 实际需分层(service/impl),这里仅为记录 测试 可通过该U

    2024年02月11日
    浏览(33)
  • 直接在html中引入Vue.js的cdn来实现一个简单的上传图片组件

    当使用 Vue.js 的 CDN 来实现一个简单的上传图片组件时,你可以利用 Vue 的数据绑定和事件处理能力,结合 HTML 和 CSS,轻松地创建一个交互式的图片上传界面。以下是一个示例: index.html TANKING https://afdian.net/item/ffa3292a337c11ee9a8c5254001e7c00

    2024年02月13日
    浏览(30)
  • 腾讯云COS云对象存储,分布式解决签名上传

    昨天写了阿里云的OSS对象存储签名上传,今天把腾讯云的也总结一下,非常简单,开通步骤和开通子用户并授权就不再多说,类比上一篇博客: https://blog.csdn.net/m0_57249797/article/details/124748601?spm=1001.2014.3001.5501 直接上后端签名代码: Maven依赖: 后端代码 postman发送请求获取签名链

    2024年02月12日
    浏览(32)
  • 【2023新教程】树莓派定时自动拍照并上传腾讯云对象存储COS

    仅适用于 Release date: May 3rd 2023、Debian version: 11 (bullseye) 这个树莓派OS版本,其他版本不保证有效。 首先使用如下命令,查看自己树莓派的架构。 结果如下: 如果红圈处显示为 aarch64 ,使用命令 sudo nano /etc/apt/sources.list ,注释掉里面的所有内容,加入以下内容: 然后保存。

    2024年02月12日
    浏览(33)
  • js实现将文本生成二维码(腾讯云cos)

    示例 页面代码 调用cos生成二维码接口,需要带上有效的签名

    2024年02月08日
    浏览(34)
  • vue中,上传图片的流程

    在Vue中进行图片上传的步骤可以分为以下几个:         添加上传组件         首先,你需要在Vue组件中添加一个上传组件,例如 input type=\\\"file\\\" 。可以使用Vue的模板语法来添加组件,并使用 v-model 指令将文件绑定到组件中。以下是一个示例: vue         在这里,

    2024年02月12日
    浏览(22)
  • 前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩

    前端Vue图片上传组件支持单个文件多个文件上传 自定义上传数量 预览删除图片 图片压缩, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13099 效果图如下: 组件初始化 使用方法 HTML代码部分

    2024年02月09日
    浏览(47)
  • Vue前端压缩图片后上传,拍照上传最佳实践

    最近有一个需求,通过手机拍照后上传图片到服务器,大家应该都知道,现在的手机像素实在是太高了,随便拍一张都是 10M 以上,直接上传到服务器一方面是浪费存储空间,另外就是特别浪费流量,如果网络不好还很慢。所以想寻求一种前端压缩图片的方案。 在网上找了很

    2024年02月10日
    浏览(53)
  • vue3 vant上传图片

    在 Vue 3 中使用 Vant 组件库进行图片上传,您可以使用 Vant 的 ImageUploader 组件。ImageUploader 是 Vant 提供的图片上传组件,可以方便地实现图片上传功能。 以下是一个简单的示例,演示如何在 Vue 3 中使用 Vant 的 ImageUploader 组件进行图片上传:   首先,确保您已经安装并配置了

    2024年02月15日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包