纯前端实现腾讯cos文件上传功能

腾讯云COS文件上传 官网地址。 阅读详情

前言

在前端开发中文件上传是经常会遇到的,并且多数情况会使用第三方平台来存储文件,腾讯云cos是我们常用的。本篇文章就是带我从前端的角度实现腾讯云COS存储。本文参考了腾讯云COS开发文档 JavaScript SDK

步骤

  • 安装腾讯云COS上传所需的sdk

下载cos-js-sdk-v5.min.js并引入index.html

  • 监听文件上传组件
//监听文件变化
document.getElementById('file').onchange = function() {
                    let file = this.files[0];
                    let type = file.type
                    //初始化文件上传
                    initUploadObj(that, file.name, file, 'image', function(res) {
                        if (res.success) {
                            that.$message.success(res.msg)
                        } else {
                            that.$message.warning(res.msg)
                        }
                    })
                }
  • 初始化文件上传对象(封装起来其他地方上传也可以用)
/**
 * 初始化上传文件对象
 * @param {object} Vue
 * @param {string} fileName 文件名
 * @param {object} file 上传的文件流及文件类型 名称相关信息
 * @param {Array} 允许上传的文件类型
 * @param {function} uploadStatusCallbalck
 * @return {function} 返回回调函数
 */
export const initUploadObj = function (Vue,fileName,file,type,uploadStatusCallbalck) {
  let fileInfo = {
    file_name: fileName,
    media_type: 2,
    media_sub_type: 0,
    size_of_bytes: 122,
    file_expired_type: 'permanent',
  };
  //前端做文件类型限制
  if(type == 'image'){
    type = ['.jpg','.gif','.jpeg','.bmp','.png']
  }
  if(type == 'excel'){
    type = ['.xlsx']
  }
  let fileType =file.name ? file.name.substring(file.name.lastIndexOf(".")).toLowerCase() : ''; 
  if (!!type && type.indexOf (fileType) < 0) {
    uploadStatusCallbalck ({success: false, msg: '请上传正确的'+type+'文件格式!'});
    return;
  }
  var cos = new COS ({
    getAuthorization: function (options, callback) {
      let singleInfo = Vue.$store.state.fileToken;
      callback ({
        TmpSecretId: singleInfo.tmpSecretId,
        TmpSecretKey: singleInfo.tmpSecretKey,
        XCosSecurityToken: singleInfo.sessionToken,
        ExpiredTime: singleInfo.expiredTime,
      });
    },
  });
  fileInfo.file_name = file.name;
  //获取文件上传密钥
  getFileToken (Vue, fileInfo, cos, file, uploadStatusCallbalck);
};
  • 获取文件上传密钥(最好存在后端通过ajax请求获取,安全性较高)
function getFileToken (Vue, fileInfo, cos, file, uploadStatusCallbalck) {
  let url = process.env.VUE_APP_URL + '/file/secretid';
  if (!file) return;
  // 异步获取临时密钥
  axios
    .get (url)
    .then (function (res) {
      if (res.data.code == 100000) {
        //获取的临时秘钥存储在vuex中
        Vue.$store.commit ('UPDATE_FILE_INFO', res.data.data);
        uploadFile (cos, file, res.data.data, uploadStatusCallbalck);
      } else {
        uploadStatusCallbalck ({success: false, msg: '获取文件秘钥失败!'});
      }
    })
    .catch (function (err) {
      uploadStatusCallbalck ({success: false, msg: '获取文件秘钥接口出错!'});
    });
}
  • 上传文件(调用相关api putObject来上传文件)
/**
 * @method uploadFile
 * @param {object} cos
 */
function uploadFile (cos, file, signInfo, callback) {
  cos.putObject (
    {
      Bucket: process.env.VUE_APP_BUCKET,
      Region: 'ap-shanghai',
      Key: signInfo.fileId,
      Body: file,
      onHashProgress: function (progressData) {
        console.log ('校验中', JSON.stringify (progressData));
      },
      onProgress: function (progressData) {
        console.log ('上传中', JSON.stringify (progressData));
      },
    },
    function (err, data) {
      if (err) {
        console.log (err);
        callback ({success: false, msg: '文件上传失败!'});
        return;
      }
      callback ({success: true, msg: '上传成功!', data: data, signInfo: signInfo});
    }
  );
}

总结

腾讯云cos文件上传实际是分为三步,本地表单处理文件流 => 根据文档获取相关参数 => 上传文件。

  • 第一步主要前端上传功能的处理,可以用来限制文件上传大小(不太准确,根据文件的字节流长度),文件上传类型(根据文件后缀名)。
  • 第二步的参数多数都是可以在cos账号后台拿到的。这块参数最好还是存储在后台比较安全。
  • 第三步上传我们只需要调用sdk相关接口传入参数即可。只要熟悉了这三个步骤,上传的大部分问题都能解决掉。
腾讯云cos 通过javascript上传文件, php生成签名 准备工作: 1 准备好 密钥和储存桶名称 登录腾讯云控制台中, 从 对象储存 - 密钥管理 - api密钥 拿到 固定密钥(secretId,secretKey) ,然后在 对象储存 - 存储桶列表 中 创建储存桶,拿到 储存桶名称(bucket)以及创建该桶时 选择的区域(region),比如 中国 - 上海 “ap-shanghai” 2 搭建好 用于计算签名的api 我这边为 使用php a) 下载 COS STS SDK, 拿到 sts的一个类 https://github.com/tencenty 阅读详情

相关推荐

腾讯云对象存储COS,Springboot文件上传,附完整流程,详细步骤及代码实现

操作步骤:1.注册腾讯云账号,开启对象存储服务2.编写程序,实现文件上传。

暖阳爱学计算机的博客 3159

使用腾讯云cos存储的JavaScript SDK上传图片

腾讯云cos

在无知中学习,在学习中成长,在成长中学习 559

轻松实现微信小程序上传多文件/图片到腾讯云对象存储COS(免费额度)

轻松实现微信小程序上传多文件/图片到腾讯云对象存储COS(免费额度),步骤详细。附demo源码

coderYYY的博客 1万+

PHP上传文件到腾讯cos上源码,js纯前端实现腾讯cos文件上传功能的示例代码

前言在前端开发中文件上传是经常会遇到的,并且多数情况会使用第三方平台来存储文件,腾讯云cos是我们常用的。本篇文章就是带我从前端的角度实现腾讯云COS存储。本文参考了腾讯云COS开发文档 JavaScript SDK步骤安装腾讯云COS上传所需的sdk下载cos-js-sdk-v5.min.js并引入index.html监听文件上传组件//监听文件变化document.getElementById...

weixin_39844267的博客 512

上传文件到腾讯云COS

import COS from 'cos-js-sdk-v5' // 通过npm安装 import md5 from 'blueimp-md5' // 通过npm安装 class Auth { // 认证信息 constructor (bucket, region, TmpSecretId, TmpSecretKey, XCosSecurityToken, ExpiredTime) { ...

T_T55555的博客 1505

SpringMVC与腾讯云COS集成实现图片文件上传教程

SpringMVC是Spring框架的一部分,它是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架。它通过分离模型(Model)、视图(View)和控制器(Controller)来组织代码,这样可以使得代码更加清晰,易于管理。SpringMVC负责映射不同的请求并将其分发到相应的处理器,并支持RESTful应用程序开发。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。

weixin_36300623的博客 1064

前端 上传文件/照片/视频 到cos(腾讯云) 代码实现

前端 上传文件/照片/视频 到cos(腾讯云)

weixin_55042716的博客 3497

cos-js-sdk-v5:腾讯云 COS JS SDK(XML API)

cos-js-sdk-v5 腾讯云 COS JS SDK() Get started 一、前期准备 首先,JS SDK 需要浏览器支持基本的 HTML5 特性,以便支持 ajax 上传文件和计算文件 md5 值。 到 创建存储桶,得到 Bucket(存储桶名称) 和 到 获取您的项目 SecretId 和 SecretKey 配置 CORS 规则,配置例子如下图: 二、计算签名 由于签名计算放在前端会暴露 SecretId 和 SecretKey,我们把签名计算过程放在后端实现,前端通过 ajax 向后端获取签名结果,正式部署时请再后端加一层自己网站本身的权限检验。 这里提供 ,其他语言,请参照对应的 三、上传例子 创建 test.html,填入下面的代码,修改里面的 Bucket 和 Region。 部署好后端的签名服务,并修改 getAuthorization 里的签名服务地址 把

腾讯云 COS 实现文件上传下载以及批量上传文件至cos存储桶(全球加速)

随着云计算技术的不断发展,越来越多的应用开始将文件存储托付给云端,而腾讯云 COS 作为一款高效、安全且稳定的对象存储服务,成为了众多开发者的首选。无论是个人项目还是企业级应用,腾讯云 COS 都能提供强大的支持。本文将介绍如何通过腾讯云 COS 实现文件上传下载功能,提升用户体验,让上传过程变得更加透明和友好。

第五季永生花-的博客 2933

faceRecognition.zip

本项目是一个基于前端人脸识别技术实现的照片合成示例,主要基于javascript实现拍照获取图片并优化上传功能

js纯前端实现腾讯cos文件上传功能的示例代码

前言 在前端开发中文件上传是经常会遇到的,并且多数情况会使用第三方平台来存储文件,腾讯云cos是我们常用的。本篇文章就是带我从前端的角度实现腾讯云COS存储。本文参考了腾讯云COS开发文档 JavaScript SDK 步骤 安装腾讯云COS上传所需的sdk 下载cos-js-sdk-v5.min.js并引入index.html 监听文件上传组件 //监听文件变化 document.getElementById('file').onchange = function() { let file = this.files[0]; let type =

Vue3_对接腾讯云COS_大文件分片上传和下载

如果用户上传了比较大的文件时,就会比较慢,我们通常需要对大文件分片上传,如果传到腾讯云COS的存储桶,会更加方便。下面介绍一下,vue3对接腾讯云对象存储进行文件上传和下载。

分享程序相关知识 2146

【零基础入门哈希签名架构,从Lamport到SPHINCS+】第二集 哈希签名树 Merkle Tree Authentication

在第一集中,我们一直忽略了一个问题。设想一下,假如有一个Hacker(黑客),在截获到Sender发送给Receiver的公钥之后,把这个公钥改成Hacker自己的公钥,然后再发给Receiver,那么Receiver就会误认为这是Sender的公钥。所以我们之前所说放方案,其安全性都需要建立在一个前提下:Receiver需要确认公钥确实是Sender发出的。

m0_50572808的博客 2453

springboot整合腾讯云cos对象存储,获取临时密钥,前端直传图片文件

文件上传安全优化方案:通过临时密钥实现前端直传腾讯云COS 摘要: 本文提出了一种优化文件上传流程的方案,通过后端生成临时密钥供前端使用,实现前端直接上传文件至腾讯云COS。该方案解决了前端直传时永久密钥暴露的安全风险,同时减轻了服务器压力。后端采用SpringBoot框架,配置腾讯云COS参数后,通过STS服务类生成临时密钥并设置访问权限策略。前端通过调用获取临时密钥的API接口,使用临时凭证进行文件上传。实践表明,该方案既保障了密钥安全,又提升了上传效率。

はんみん的博客 1485

Vivado IP核综合失败别慌:除了打补丁,这个TCL命令也能救急(以Video Frame Buffer为例)

本文详细解析了Vivado IP核综合失败的排查方法,特别是针对Video Frame Buffer Read IP的常见问题。从补丁安装到深入分析DCP文件生成机制,再到使用强大的TCL命令`foreach ip_in_proj [get_ips] {compile_c [get_ips $ip_in_proj]}`强制重编译,提供了一套完整的解决方案。帮助开发者快速定位并解决IP核综合失败问题,确保项目顺利进行。

weixin_30892889的博客 424

避坑指南:STM32CubeMX配置SDIO4bit模式时为什么卡在HAL_SD_ConfigWideBusOperation?

本文深入分析了使用STM32CubeMX配置SDIO 4位模式时,程序在HAL_SD_ConfigWideBusOperation函数处卡死的常见问题。文章从硬件连接、CubeMX配置、初始化序列及HAL库底层实现等多个维度剖析根源,并提供了从初始化流程优化到增强代码鲁棒性等实战解决方案,帮助开发者彻底解决这一棘手难题。

pca5navigator的博客 825

Spring Boot + Vue2 实现腾讯云 COS 文件上传:从零搭建分片上传系统

普通上传大文件分片上传(支持并发、断点续传)安全性增强(密钥不暴露)跨域规则配置(CORS)可根据实际业务需求进一步扩展,如添加上传进度持久化、上传失败重试机制等。

shitou的博客 1224

SAP中错记虚拟利润中心的调整,冲销处理实例

我非CO专业顾问。工作中遇到的问题,也会找资料,分析,测试。有时这个过程会拿到结果,解决问题。遂将过程记录下来备查。读者请谨慎参考!EC-PCA: 利润中心记账流程_9ke0-优快云博客。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 1796

腾讯云对象存储cos使用

腾讯云对象存储cos使用一、新建密钥1、登录腾讯云进入控制台2、新建密钥二、创建对象存储1.进入对象存储,并创建存储桶三、创建项目pom文件yml文件创建一util层controller层页面显示四、测试1、上传下载2、删除文件3、查询存储桶,创建存储桶4、查询存储桶中内容 一、新建密钥 1、登录腾讯云进入控制台 2、新建密钥 二、创建对象存储 1.进入对象存储,并创建存储桶 三、创建项目 pom文件 <dependencies> <dependency> &l

qq_44733333的博客 2974

滑模控制算法(SMC)讲解-案例(附C代码)

该文章介绍了滑模控制算法的原理实现步骤,特点及关键问题,最后以车辆控制案例来讲解滑模控制的整个步骤实现

heda3的博客 4111

模型实战(32)之 yolo26 实现对全身关键点数据集 的训练与关键点检测

模型实战(32)之 yolo26 实现对全身关键点数据集 的训练与关键点检测

yohnyang的博客 90

腾讯云COS对象储存实现文件上传进度表显示

Java连接腾讯云COS对象储存实现文件上传接口详细配置 和 Java连接本地redis往期的文章,这篇文章建立在这一篇上。 文件上传的时候将对应进度,将进度保存在redis中,进度监听如果进度变更,则更新redis中的值,前端调用接口访问redis中的进度值,如果为100则断开请求。这里我查了几篇文章但是都不是很全,故而我 @Autowired private PutObjectProgressListener putObjectProgressListener; /**

大道至简 1702

【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等

本专栏研究领域为【超分辨率重建】,涵盖图像超分、视频超分,实时超分,4K修复等方面。主要内容包括主流算法模型的论文精读、论文复现、毕业设计、涨点手段、调参技巧、论文写作、应用落地等方面。算法模型从SRCNN开始更新至今,一般是一篇论文精读对应一篇论文复现。论文精读详解理论,归化繁为简,归纳核心,积累词句,培养阅读论文和论文写作能力。论文复现依托Pytorch代码,实现完整的模型训练流程,总结调参方法,记录碰到的bug,论文插图可视化,培养读写代码能力、做实验的能力、以及应用落地能力。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 3万+

PHP上传文件到腾讯cos上源码,通过COS上传文件至腾讯云

最近在做项目的时候,很多次通过Cos将文件上传到腾讯云。腾讯官方也提供了专门的API接口(cloud.tencent.com/document/pr… )通过Cos上传的大体思路是这样的,第一步:实例化一个Cos。第二步:通过后端接口获取秘钥。第三步:选择需要上传的文件进行文件上传,上传成功之后,在回调函数中会返回文件的地址。第四步:再将这个地址通过后端接口保存到数据库中,就可以在项目中使用上传的...

weixin_28760959的博客 1385

手把手教你学Simulink--双足机器人的自动避障控制策略仿真

自动避障是双足机器人导航系统中的一个关键功能,它允许机器人在动态或静态环境中自主地避开障碍物。实现这一功能通常需要结合路径规划、环境感知和实时控制算法。在本教程中,我们将使用MATLAB和Simulink来创建一个简化版的双足机器人自动避障控制系统仿真。

MHD0815的博客 160

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 纯web端实现二维码识别
下一篇: 深入理解flex布局
厌笔不萧生
博客等级 码龄10年 5粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值