11 阿里云的OSS服务
1 OSS多种上传方案如下图官网地址https://help.aliyun.com/zh/oss/user-guide/object-overview?spma2c4g.11186623.help-menu-31815.d_0_3_0.159e7dc0FoaPTQ2 OSS云服务的初始配置2.1 购买云存储服务2.2 新增oss Bucket存储空间 并配置新增存储空间检查存储空间配置 可以在左侧权限控制里面修改配置管理2.3 创建AccessKeyId以及AccessSecret2.3.1创建用户2.3.2记住用户ID和密钥3 服务端直接上传上传测试官方文档 https://github.com/alibaba/aliyun-spring-boot/blob/master/aliyun-spring-boot-samples/aliyun-oss-spring-boot-sample/README-zh.md3.1 引入依赖dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alicloud-oss/artifactIdversion2.2.0.RELEASE/version/dependency3.2 将用户ID和密钥配置到springboot的yml文件中spring:alicloud:access-key:# 2.3.2中用户idsecret-key:# 2.3.2中用户keyoss:endpoint:#oss-cn-beijing.aliyuncs.com # 2.2中检查配置最下面可以查阅到Endpoint地域节点bucket:# gulimall-hellolpf # 2.2中创建的Bucket名字3.3 测试用例SpringBootTestclassGulimallThirdPartyApplicationTests{AutowiredOSSossClient;TestvoidcontextLoads()throwsFileNotFoundException{FileInputStreaminputStreamnewFileInputStream(C:\\Users\\24861\\Pictures\\Screenshots\\屏幕截图 2026-09-12 233720.png);ossClient.putObject(gulimall-hellolpf,屏幕截图 2026-09-12 233720.pngg,inputStream);ossClient.shutdown();System.out.println(上传成功);}}3.4 上传成功4 web表单上传方案谷粒商城的实现方式官方 官方参考文档使用PostObject接口将文件直接从 Web 端上传到 OSS服务器生成的签名为直传操作提供安全保障同时支持配置上传策略Policy以限制上传操作并满足业务需求。即java服务端根据2.3.2的密钥对postPolicy加密后生成post签名并返回给前端前端将postPolicy和post签名一起传给OSS服务器OSS服务器自己也存了密钥将postPolicy加密后的字串与post签名对比如果一致则验证通过。1.1 配置OSS引入依赖dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alicloud-oss/artifactIdversion2.2.0.RELEASE/version/dependency将用户ID和密钥配置到springboot的yml文件中spring:alicloud:access-key:# 2.3.2中用户idsecret-key:# 2.3.2中用户keyoss:endpoint:#oss-cn-beijing.aliyuncs.com # 2.2中检查配置最下面可以查阅到Endpoint地域节点bucket:# gulimall-hellolpf # 2.2中创建的Bucket名字1.2 配置java服务端RestControllerRequestMapping(/oss)publicclassOssController{AutowiredOSSossClient;/** * 获取yml中配置 */Value(${spring.cloud.alicloud.oss.endpoint})privateStringendpoint;Value(${spring.cloud.alicloud.oss.bucket})privateStringbucket;Value(${spring.cloud.alicloud.access-key})privateStringaccessId;/** * 获取对象签名 */RequestMapping(/policy)publicRpolicy(){// https://gulimall-wan.oss-cn-shanghai.aliyuncs.comStringhosthttps://bucket.endpoint;// 文件在bucket存储目录若不存在则会自动创建路径。使用日期作为目录StringdirnewSimpleDateFormat(yyyy-MM-dd).format(newDate())/;MapString,StringrespMapnull;try{longexpireTime30;longexpireEndTimeSystem.currentTimeMillis()expireTime*1000;DateexpirationnewDate(expireEndTime);//// PostObject请求最大可支持的文件大小为5 GB即CONTENT_LENGTH_RANGE为5*1024*1024*1024。PolicyConditionspolicyCondsnewPolicyConditions();policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE,0,1048576000);policyConds.addConditionItem(MatchMode.StartWith,PolicyConditions.COND_KEY,dir);//postPolicyStringpostPolicyossClient.generatePostPolicy(expiration,policyConds);byte[]binaryDatapostPolicy.getBytes(utf-8);//传给oss服务器的原始postPolicyStringencodedPolicyBinaryUtil.toBase64String(binaryData);//密钥加密后的postSignatureStringpostSignatureossClient.calculatePostSignature(postPolicy);respMapnewLinkedHashMapString,String();respMap.put(accessid,accessId);respMap.put(policy,encodedPolicy);respMap.put(signature,postSignature);respMap.put(dir,dir);respMap.put(host,host);respMap.put(expire,String.valueOf(expireEndTime/1000));}catch(Exceptione){System.out.println(e.getMessage());}finally{ossClient.shutdown();}returnR.ok().put(data,respMap);}}1.3 配置Web端结合官方用例修改的HTML上传界面注意这两行一定要根据实际情况修改。const baseUrl “http://localhost:88/api/thirdparty”;fetch(baseUrl “/oss/policy”, { method: “GET” })遇到请求跨域的问题,请参考2.2.3 https://blog.csdn.net/qq_43190347/article/details/167496275?spm1011.2415.3001.10575sharefrommp_manage_link!DOCTYPEhtmlhtmllangzh-CNheadmetacharsetUTF-8/metanameviewportcontentwidthdevice-width, initial-scale1.0/title服务端生成签名上传文件到OSS/title/headbodydivclasscontainerformdivclassmb-3labelforfileclassform-label选择文件:/labelinputtypefileclassform-controlidfilenamefilerequired//divbuttontypesubmitclassbtn btn-primary上传/button/form/divscripttypetext/javascriptdocument.addEventListener(DOMContentLoaded,function(){constformdocument.querySelector(form);constfileInputdocument.querySelector(#file);form.addEventListener(submit,(event){event.preventDefault();constfilefileInput.files[0];if(!file){alert(请选择一个文件再上传。);return;}// 后端网关地址按实际情况修改constbaseUrlhttp://localhost:88/api/thirdparty;fetch(baseUrl/oss/policy,{method:GET}).then((response){if(!response.ok){thrownewError(获取签名失败);}returnresponse.json();}).then((result){// 后端返回结构为 { code, msg, data: { accessid, policy, signature, dir, host, expire } }if(result.code!0){thrownewError(获取签名失败: result.msg);}constdataresult.data;// file 必须为最后一个表单域// key 使用 dir 前缀 时间戳 文件名避免同名覆盖constkeydata.dirDate.now()-file.name;letformDatanewFormData();formData.append(key,key);formData.append(policy,data.policy);formData.append(OSSAccessKeyId,data.accessid);formData.append(success_action_status,200);formData.append(signature,data.signature);formData.append(file,file);returnfetch(data.host,{method:POST,body:formData});}).then((response){if(response.ok){console.log(上传成功);alert(文件已上传);}else{console.log(上传失败,response);alert(上传失败请稍后再试);}}).catch((error){console.error(发生错误:,error);});});});/script/body/html

相关新闻

Docker入门与实战——实战案例(编程开发)(一)

Docker入门与实战——实战案例(编程开发)(一)

实战案例(编程开发)1、C/C1.1、GCC1.1.1、使用官方镜像1.1.2、定制镜像1.2、LLVM1.2.1、使用官方镜像1.2.2、定制镜像1.3、Clang1.3.1、使用官方镜像1.3.2、定制镜像1.3.3、相关资源2、Java2.1、使用官方镜像2.2、Spring Boot2.3、相关资源3、Python3.1、…

2026/10/13 15:04:34 阅读更多 →
压电喷墨打印头的工作动态特性

压电喷墨打印头的工作动态特性

压电喷墨打印头的运行动力学期刊:《物理报告》(Physics Reports) 491 (2010) 77‑177 作者:赫尔曼维肖夫(Herman Wijshoff) 奥塞技术有限公司(Oc Technologies B.V.),荷兰芬洛,邮政信…

2026/10/13 15:03:33 阅读更多 →
基于openclaw实现自定义mcp/skill(第二章)

基于openclaw实现自定义mcp/skill(第二章)

代码本身在这里是做任务的,只负责被openclaw调度其中自己需要开发:MCP、Skill概念是什么在本项目中的角色Skill给 OpenClaw Agent 看的一组 Markdown 脚本,让它知道“什么时候、用什么参数、按什么流程做恶意充值检测”纯文档编排&#xff0…

2026/10/13 15:03:33 阅读更多 →

最新新闻

实习和校招到底在选什么?从简历到面试的完整求职指南

实习和校招到底在选什么?从简历到面试的完整求职指南

1. 实习和校招到底在选什么很多同学第一次接触实习和校招的时候,脑子里冒出来的第一个问题往往是“我该投哪家”“简历怎么写”“面试问什么”。这些问题当然重要,但如果只盯着这些操作层面的东西,很容易陷入一种“做了很多准备却始终不得要领…

2026/10/13 16:36:05 阅读更多 →
xqffi 使用指南:用 PyO3 在 Python 中调用 XQuad Rust 虚拟机(xqvm + xqasm)

xqffi 使用指南:用 PyO3 在 Python 中调用 XQuad Rust 虚拟机(xqvm + xqasm)

【免费下载链接】xquad A rust implementation of the Quip Networks quantum virtual machine. 项目地址: https://gitcode.com/gh_mirrors/xq/xquad 点击查看 免费下载 xqffi 是 XQuad 工具链的 Python 扩展层:它通过 PyO3)和 .xqasm 汇编…

2026/10/13 16:36:05 阅读更多 →
固定资产管理之—硬件产品的分类

固定资产管理之—硬件产品的分类

企业固定资产品类繁杂:办公电脑、工控设备、仪器仪表、货架机具、IT 硬件、精密配件,传统人工盘点耗时耗力、错盘漏盘频发、资产去向无从追溯。随着数字化资产管理普及,RFID 标签打印机、RFID 发卡器、手持数据采集器、RFID 通道门四款核心硬…

2026/10/13 16:36:05 阅读更多 →
HOG+SVM实战:从特征提取到滑窗检测的完整指南

HOG+SVM实战:从特征提取到滑窗检测的完整指南

简介:本资源是一套基于HOG特征与SVM分类器的手写字符识别完整工程方案,面向计算机视觉入门者、模式识别课程学习者及需要完成相关实验或课程设计的学生。方案以CASIA-NLPR手写字符数据集为处理对象,涵盖特征提取、模型训练与分类预测的完整流…

2026/10/13 16:36:05 阅读更多 →
Frank-Wolfe求解交通用户均衡:SiouxFalls网络实战解析

Frank-Wolfe求解交通用户均衡:SiouxFalls网络实战解析

简介:本资源是一份面向交通工程、运筹优化与智能交通系统方向的Python实践代码包,聚焦用户均衡(UE)问题的算法实现与小规模网络验证,适合交通规划初学者、研究生课程设计及算法爱好者动手复现。资源采用经典Frank-Wolf…

2026/10/13 16:36:05 阅读更多 →
从grep到rea:命令行日志分析工具的字段提取实践

从grep到rea:命令行日志分析工具的字段提取实践

半夜两点,我对着一个 1.8GB 的访问日志发呆。我要在几十万条请求里,把某次超时链路涉及的所有记录捞出来,按请求 ID 拼成完整时间线,再看哪个环节耗时异常。第一反应是 grep,grep 也确实把行筛出来了,但筛完…

2026/10/13 16:35:03 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →