JS node 后端签名前端文件直传ali-oss解决方案

1:首先打开跨域

上面搞好了开始写代码

html

  <input type="file" id="upload" onchange="uploadfile()">

js

    function uploadfile() {var file = document.getElementById('upload').files[0]$.ajax({url: '/policy',data: '',type: 'get',dataType: 'json',success: function (data) {let param = new FormData() // 创建form对象param.append('OSSAccessKeyId', data.OSSAccessKeyId)param.append('policy', data.policy)param.append('key', data.startsWith + data.saveName)param.append('success_action_status', 200)param.append('signature', data.signature)param.append('file', file, data.saveName)const xhr = new XMLHttpRequest()xhr.open('post', data.host, true)xhr.upload.addEventListener('progress', (evt) => {this.progress = Math.round((evt.loaded) * 100 / evt.total)}, false)xhr.addEventListener('load', (e) => {if (e.target.status !== 200) {console.log(e.target.response)console.log('上传失败!')return}if (e.target.status === 200) {console.log(data.host + '/' + data.startsWith + data.saveName)this.imgUrl = data.host + '/' + data.startsWith + data.saveName}}, false)xhr.send(param)}})}

node 

const crypto = require('crypto');
const path = require('path');
const axios = require('axios');
let oss = {OSSAccessKeyId: 'deAIrr6Bkdemo', //上图显示的位置,去获取你自己的ID,下同secret: 'bPaJweew3lwaZweiPjeNClsluyUhne33M',//上图显示的位置host: 'https://demo.oss-cn-beijing.aliyuncs.com' // //上图显示的位置
};
var policy = async function (ctx, next) {const dirPath = 'img/' //bucket 项目里的文件路径const {OSSAccessKeyId, host, secret} = oss;let end = new Date().getTime() + 360000let expiration = new Date(end).toISOString()let policyString = {expiration,conditions: [['content-length-range', 0, 1048576000],['starts-with', '$key', dirPath]]}policyString = JSON.stringify(policyString)const policy = new Buffer(policyString).toString('base64')const signature = crypto.createHmac('sha1', secret).update(policy).digest('base64')ctx.body = {OSSAccessKeyId: OSSAccessKeyId,host,policy,signature,saveName: end,startsWith: dirPath};
}module.exports = {policy: policy}

OK启动运行

后端启动服务那些我就 不贴 了,这是功能代码,直接用上

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在linux上获得线程id的方法

From: http://www.linuxidc.com/Linux/2014-01/94723.htm 我使用了第二种方法&#xff0c;很方便&#xff1a; #define gettid() syscall(__NR_gettid) 用到的地方 gettid() 在linux2.4版本后&#xff0c;linux使用了NPTL作为自己的线程库&#xff0c;为了兼容POSIX标准&a…

【MCAL】TC397+EB-treso之MCU配置实战 - 芯片时钟

本篇文章介绍了在TC397平台使用EB-treso对MCU驱动模块进行配置的实战过程&#xff0c;主要介绍了后续基本每个外设模块都要涉及的芯片时钟部分&#xff0c;帮助读者了解TC397芯片的时钟树结构&#xff0c;在后续计算配置不同外设模块诸如通信速率&#xff0c;定时器周期等&…

html引入UI库vant

vant地址 注意html中不支持单标签元素 元素标签必须是闭合标签 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta nam…

nunjucks渲染富文本解析错误输出字符串而不是元素

今天遇到个坑&#xff0c;nunjucks 的插入变量{{}}输出的是字符串&#xff0c;而我用富文本编辑器插入数据库的是字符串&#xff0c;它不解析成元素(html),怎么办&#xff1f; 用什么方法引入它能成html&#xff1f; 网上查&#xff0c;没这个资料 因为以前用过EJS输出过字符…

ubuntu下安装、卸载软件

2019独角兽企业重金招聘Python工程师标准>>> 安装&#xff1a;(1) apt-get install name 卸载&#xff1a;(1) apt-get remove name 卸载并清除配置&#xff1a;(1) apt-get remove --purge name 更新信息库&#xff1a;apt-get update 系统升级&#xff1a;apt-get…

英文版Ubuntu 安装中文输入法

一、安装语言包 &#xff08;系统默认会安装中文简体语言包&#xff09; System Settings-->Language Support-->Install/Remove Languages 二、安装IBUS框架 sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 三、安装中文引擎 Ibus 拼音&#xff1…

Linux获取线程id的方法学习

From: http://www.linuxidc.com/Linux/2014-01/94723.htm 最近一直在想&#xff1a; 如何确认两段代码是不是在同一个线程中执行的呢&#xff1f; 通过查看资料&#xff0c;发现一种比较简单的方法就是在代码中使用printf将当前线程的id打印出来。 而这也分成两种情况&#x…

console使用

console.log用于控制台打印&#xff1b;但除此之外console还有很多用处 1.分组打印console.group(分组打印1-2)console.log(1);console.log(2);console.groupEnd()console.group(分组打印3-4)console.log(3);console.log(4);console.group(俄罗斯套娃)console.log(5);console.…

Linux平台上搭建apache+tomcat负载均衡集群

传统的Java Web项目是通过tomcat来运行和发布的。但在实际的企业应用环境中&#xff0c;采用单一的tomcat来维持项目的运行是不现实的。tomcat 处理能力低&#xff0c;效率低&#xff0c;承受并发小&#xff08;1000左右&#xff09;。当用户请求较少时&#xff0c;单一的tomca…

(转)C#中 DirectoryEntry组件应用实例

C#中 DirectoryEntry组件应用实例DirectoryEntry类封装Active Directory层次结构中的节点或对象&#xff0c;使用该类可以绑定到对象&#xff0c;或者读取和更新属性。图1所示为DirectoryEntry组件。DirectoryEntry组件1&#xff0e; 功能DirectoryEntry类封装Active Director…

小程序设置header cookie

代码片段 method: POST,url: config.service.balabala,data: this.data.balabala,header: { cookie: demobalabala;loginbalabala},success: function (data) {

【Linux学习】epoll详解

From: http://blog.csdn.net/xiajun07061225/article/details/9250579 什么是epoll epoll是什么&#xff1f;按照man手册的说法&#xff1a;是为处理大批量句柄而作了改进的poll。当然&#xff0c;这不是2.6内核才有的&#xff0c;它是在2.5.44内核中被引进的(epoll(4) is a …

Windows Server Backup 2012设置备份周期

Windows Server Backup 2012设置备份周期 作者&#xff1a;杨坚 Windows Server Backup 概述 Windows Server Backup 功能提供一组向导及其他工具&#xff0c;您可用来对服务器执行基本的备份和恢复任务。自首次发布 Windows Server 2008 以来&#xff0c;此功能已得到更新。另…

JSP作业1--5!

输出5的阶乘 <body> <!-- 5的阶乘--> <% int s1; for(int j1;j<6;j){ %> <%s*j; %><% }%> <br> 5的阶乘是&#xff1a; <%s %> 结果&#xff1a; 转载于:https://www.cnblogs.com/miss123/p/5611038.html

js冒泡排序,简单的冒泡排序

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>冒泡排序</title><script type"text/javascript">var arr [3, 12, 5, 8988, 90, 789, 122, 15];function maopao() {for (var …

Yii Zii.widgets.Cmenu 操作

为什么80%的码农都做不了架构师&#xff1f;>>> $this->widget(zii.widgets.CMenu, array( activeCssClass>当前热点元素的样式, firstItemCssClass>第一个元素的样式, lastItemCssClass>最后一个元素的样式, encodeLable>false //這樣&#xff…

pc端vue项目打开pdf文件;网页查看pdf文件;浏览器直接打开pdf文件

//要求url是可以直接在地址栏打开的pdf地址//url https://push-repair.zuihuibao.cn/ACHC00DE0421FP00359D.pdf?e1629447429&tokenvuxdWg0Cy8FEDKDawxk2AJ2Mq9guC8xVHBddeMpk:vLCjXt5DOOUAevOJlURN5epC1CsdlBkddPdf (url) {var a document.createElement("a")…

比较分析 Spring AOP 和 AspectJ 之间的差别

比较分析 Spring AOP 和 AspectJ 之间的差别 英文原文&#xff1a;Comparative Analysis Between Spring AOP and AspectJ 标签&#xff1a; AspectJ Spring158人收藏此文章, 我要收藏oschina 推荐于 3年前 (共 7 段, 翻译完成于 10-24) (19评) 参与翻译(2人)&#xff1a; bear…

linux下Epoll实现简单的C/S通信

From: http://blog.csdn.net/piaojun_pj/article/details/6103709 epoll的优点&#xff1a; 1.支持一个进程打开大数目的socket描述符(FD) select 最不能忍受的是一个进程所打开的FD是有一定限制的&#xff0c;由FD_SETSIZE设置&#xff0c;默认值是2048。对于那些需要支持…