纯前端实现图片上传七牛云
首先安装下依赖:
npm install qiniu-js crypto-js
然后封装一下 uploaderHelper.ts
import * as qiniu from 'qiniu-js';
// @ts-ignore
import CryptoJS from 'crypto-js'// 请求接口上传图片
export function uploadFile(file: File) {const uptoken = getToken('你的ak','你的sk','对应空间');const key = file.name;const config = {useCdnDomain: true,region: qiniu.region.z0,forceDirect: true // 是否上传全部采用直传方式};const putExtra: any = {fname: file.name,mimeType: ['image/png', 'image/jpeg', 'image/gif']};return qiniu.upload(file, key, uptoken, putExtra, config);
}
// eslint-disable-next-line camelcase
export default function getToken(access_key: string, secret_key: string, bucketname: string) {// 构造策略var putPolicy = {"scope": bucketname,"deadline": 3600 + Math.floor(Date.now() / 1000)}var encoded = base64Encode(utf16to8(JSON.stringify(putPolicy)));var hash = CryptoJS.HmacSHA1(encoded, secret_key);// 构造凭证var encodedSign = hash.toString(CryptoJS.enc.Base64).replace(/\//g, '_').replace(/\+/g, '-');// eslint-disable-next-line camelcasevar uploadToken = access_key + ':' + encodedSign + ':' + encoded;return uploadToken;
}
function base64Encode(str: string) {var out, i, len;var c1, c2, c3;len = str.length;i = 0;out = "";var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";while (i < len) {c1 = str.charCodeAt(i++) & 0xff;if (i === len) {out += base64EncodeChars.charAt(c1 >> 2);out += base64EncodeChars.charAt((c1 & 0x3) << 4);out += "==";break;}c2 = str.charCodeAt(i++);// eslint-disable-next-line eqeqeqif (i === len) {out += base64EncodeChars.charAt(c1 >> 2);out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));out += base64EncodeChars.charAt((c2 & 0xF) << 2);out += "=";break;}c3 = str.charCodeAt(i++);out += base64EncodeChars.charAt(c1 >> 2);out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));out += base64EncodeChars.charAt(c3 & 0x3F);}return out;
}
function utf16to8(str: string) {var out, i, len, c;out = "";len = str.length;for (i = 0; i < len; i++) {c = str.charCodeAt(i);if ((c >= 0x0001) && (c <= 0x007F)) {out += str.charAt(i);} else if (c > 0x07FF) {out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));} else {out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));}}return out;
}
然后对应上传图片的文件中引入该文件下的 uploadFile方法使用即可 ,使用方法如下:
uploadFile(files[0]).subscribe({next: (result) => {console.log(result)},error: (err) => {console.log(err)},complete: (e) => {//上传成功会返回数据console.log(e)}
});
相关文章:
纯前端实现图片上传七牛云
首先安装下依赖: npm install qiniu-js crypto-js 然后封装一下 uploaderHelper.ts import * as qiniu from qiniu-js; // ts-ignore import CryptoJS from crypto-js// 请求接口上传图片 export function uploadFile(file: File) {const uptoken getToken(你的…...
win10+wsl2+Ubuntu20.2+Pycharm+WSL解释器
目的:创建一个ubuntu系统下的python解释器,作为win平台下的pycharm的解释器。 这样做的好处是可以直接在win系统里操作文件,相比于linux方便一点,而且也不用对wsl的子系统进行迁移。 一、安装前准备 1. 设置-Windows更新-window…...
EL与JSTL
目录 EL EL语法 EL运算符 JSTL JSTL标签分类 JSP脚本:代码结构混乱、脚本与HTML 混合易出错、代码不易维护。 EL表达式:优化程序代码,增加程序可读性。 EL EL语法 EL表达式 ${ EL 表达式 } EL操作符 操作符“ . ” 获取对象的属性&a…...
【Linux】动态库和静态库
动态库和静态库 软链接硬链接硬链接要注意 自定义实现一个静态库(.a)解决、使用方法静态库的内部加载过程 自定义实现一个动态库(.so)动态库加载过程 静态库和动态库的特点 软链接 命令:ln -s 源文件名 目标文件名 软链接是独立连接文件的,他…...
R语言:联合多指标的ROC曲线
# 加载数据和包rm(list=ls())library(pROC)library(ggplot2)setwd("C:/Users/syy/Desktop/MRI_lab/")data<- read.csv("test1.csv", header = T)data$Groups...
将一个树形结构的数据平铺成一个一维数组(vue3)
一、需求描述 由于自带组件库没有具体完善,无法实现像element-ui这种可以多选选择任意一级的选项,也就是说,选择父级的时候不会联动选择子级的全部 例如: 所以,才会出现【二、案例场景】类似的场景,可以用来多选 ,并可以实现单选父级而不关联子级,选择了将树状数据进…...
OSCS开源安全周报第 56 期:Apache Airflow Spark Provider 任意文件读取漏洞
本周安全态势综述 OSCS 社区共收录安全漏洞 3 个,公开漏洞值得关注的是 Apache NiFi 连接 URL 验证绕过漏洞(CVE-2023-40037)、PowerJob 未授权访问漏洞(CVE-2023-36106)、Apache Airflow Spark Provider 任意文件读取漏洞(CVE-2023-40272)。 针对 NPM 、PyPI 仓库…...
CleanMyMac2024永久版Mac清理工具
Mac电脑作为相对封闭的一个系统,它会中毒吗?如果有一天Mac电脑产生了疑似中毒或者遭到恶意不知名攻击的现象,那又应该如何从容应对呢?这些问题都是小编使用Mac系统一段时间后产生的疑惑,通过一番搜索研究,小…...
软考高级系统架构设计师(一)计算机硬件
【原文链接】软考高级系统架构设计师(一)计算机硬件 1.1 计算机硬件组成 1.1.1 计算机的基本硬件组成 运算器控制器存储器输入设备输出设备 1.1.2 中央处理单元(CPU) 中央处理单元(CPU)的组成 运算器…...
bat文件中自定义cmd命令;执行完退出命令提示符窗口
1. bat中启动cmd命令 start cmd /k " cmd中命令行里自定义的命令 " 2.编写规则 start cmd /k "命令1 & 命令2 & 命令3" (无论前面命令是否成功, 后面都会执行start cmd /k "命令1 && 命令2 && 命令3 " (仅…...
深度学习的经典算法的论文、解读和代码实现
文章目录 CNN网络的经典算法LeNet-5AlexNetVGGInceptionInception-v1(GoogLeNet)BN-Inception ResNetR-CNNR-CNNFast R-CNNFaster R-CNN YOLOYOLO v1YOLO v2YOLO v3YOLO v4 RNN的经典算法RNNGRULSTMEncoder-DecoderAttentionTransformer CNN网络的经典算法 LeNet-5 来源论文&…...
开源TTS+gtx1080+cuda11.7+conda+python3.9吊打百度TTS
一、简介 开源项目,文本提示的生成音频模型 https://github.com/suno-ai/bark Bark是由Suno创建的基于变换器的文本到音频模型。Bark可以生成极为逼真的多语种演讲以及其他音频 - 包括音乐、背景噪音和简单的声音效果。该模型还可以产生非言语沟通,如…...
【私有GPT】CHATGLM-6B部署教程
【私有GPT】CHATGLM-6B部署教程 CHATGLM-6B是什么? ChatGLM-6B是清华大学知识工程和数据挖掘小组(Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University)发布的一个开源的对话机器人。根据官方介绍,这是…...
基于“R语言+遥感“水环境综合评价方法教程
详情点击链接:基于"R语言遥感"水环境综合评价方法教程 一:R语言 1.1 R语言特点(R语言) 1.2 安装R(R语言) 1.3 安装RStudio(R语言) (1)下载地址…...
To_Heart—题解——P6234 [eJOI2019] T形覆盖
link. 突然很想写这篇题解。虽然题目不算难。 考场只有30分是为什么呢?看来是我没有完全理解这道题目吧! 首先很明显的转换是,把 T 型覆盖看成十字形,再考虑最后减去某一块的贡献。 然后然后直接往原图上面放十字形!对于每一个…...
[软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo
有时候我们拿到一个数据集发现是xml文件格式如下: <?xml version"1.0" ?> <doc><path>C:\Users\Administrator\Desktop\test\000000000074.jpg</path><outputs><object><item><name>dog</name>…...
Spring BeanName自动生成原理
先看代码演示 项目先定义一个User类 public class User {private String name;Overridepublic String toString() {return "User{" "name" name \ };}public String getName() {return name;}public void setName(String name) {this.name name;} }…...
论文阅读_图形图像_U-NET
name_en: U-Net: Convolutional Networks for Biomedical Image Segmentation name_ch: U-Net:用于生物医学图像分割的卷积网络 addr: http://link.springer.com/10.1007/978-3-319-24574-4_28 doi: 10.1007/978-3-319-24574-4_28 date_read: 2023-02-08 date_publi…...
基于热交换算法优化的BP神经网络(预测应用) - 附代码
基于热交换算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于热交换算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.热交换优化BP神经网络2.1 BP神经网络参数设置2.2 热交换算法应用 4.测试结果:5.Matlab代…...
基于秃鹰算法优化的BP神经网络(预测应用) - 附代码
基于秃鹰算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于秃鹰算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.秃鹰优化BP神经网络2.1 BP神经网络参数设置2.2 秃鹰算法应用 4.测试结果:5.Matlab代码 摘要…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
