当前位置: 首页 > news >正文

文件本地和OSS上传

这里写目录标题

  • 前端传出文件
  • 后端本地存储
  • 阿里云OSS存储
    • 上传Demo
    • 实现上传
    • @ConfigurationProperties

前端传出文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>上传文件</title>
</head>
<body>               
<form action="/upload" method="post" enctype="multipart/form-data">姓名: <input type="text" name="username"><br>年龄: <input type="text" name="age"><br>头像: <input type="file" name="image"><br><input type="submit" value="提交">
</form>
</body>
</html>

后端本地存储

import org.springframework.web.multipart.MultipartFile;

@PostMapping(value = "/upload")
public String upload(String username, Integer age,@RequestParam("image") MultipartFile file) throws IOException {log.info("文件上传:{},{},{}",username,age,file);String name=file.getOriginalFilename();file.transferTo(new File("D:\\images\\"+name));  //存入本地return "success";
}

阿里云OSS存储

存储步骤
在这里插入图片描述
查找 Endpoint 地址
在这里插入图片描述

上传Demo


import java.io.*;import com.aliyun.oss.*;
public class Demo {public static void main(String[] args)  {// 设置 OSS Endpoint 地址String endpoint = "https://oss-cn-beijing.aliyuncs.com";String accessKeyId = "LTAI5tHKDa7NFXnaHWrUkmNs";String accessKeySecret = "aeQsl73MlNGDZ2Q3QD7cxES7zt5YVb";String bucketName = "k92q-b";  //bucket名字//上传后的名称String objectName="狗.jpg";//上传的文件地址String filePatn="C:\\Users\\DELL\\Pictures\\头像背景\\狗.jpg";OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);InputStream inputStream= null;try {inputStream = new FileInputStream(filePatn);} catch (FileNotFoundException e) {throw new RuntimeException(e);}ossClient.putObject(bucketName, objectName, inputStream);System.out.println("2. 文件 " + objectName + " 上传成功。");}
}

实现上传


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;/*** 阿里云 OSS 工具类*/
@Component
public class AliOSSUtils {private String endpoint = "https://oss-cn-beijing.aliyuncs.com";private String accessKeyId = "LTAI5tHKDa7NFXnaHWrUkmNs";private String accessKeySecret = "aeQsl73MlNGDZ2Q3QD7cxES7zt5YVb";private String bucketName = "k92q-b";/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}
}

接口部分

@PostMapping(value = "/upload")public String upload(String username,Integer age,@RequestParam("image") MultipartFile file){String url;try {url=aliOSSUtils.upload(file);} catch (IOException e) {throw new RuntimeException(e);}System.out.println("成功");return url;}

@ConfigurationProperties

为了方便修改配置项中的属性

@Component
@Data          //lombok
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSUtils{
private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;
} 
aliyun:oss:endpoint: https://oss-cn-beijing.aliyuncs.comaccessKeyId: LTAI5tHKDa7NFXnaHWrUkmNsaccessKeySecret: aeQsl73MlNGDZ2Q3QD7cxES7zt5YVbbucketName: k92q-b

相关文章:

文件本地和OSS上传

这里写目录标题 前端传出文件后端本地存储阿里云OSS存储上传Demo实现上传ConfigurationProperties 前端传出文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上传文件</title> </head&g…...

elementui table 表格 分页多选,保持选中状态

elementui多选时分页&#xff0c;解决选中状态无法保留选中项问题&#xff1a; 在el-table标签中加入row-key&#xff0c;row-key的值取当前数据里的唯一key在el-table-column selection 项中加入以下:reserve-selection“true” 完成后&#xff0c;将需要清空的地方 ( 如返回…...

MSE+Range案例

MSE的demo实现思路&#xff1a;首先准备fmp4格式的视频地址或者切片&#xff0c;接着将MSE挂载到video上&#xff0c;创建createObjectURL转二进制数据&#xff0c;fetch请求在线地址&#xff0c;分段请求&#xff0c;监听这个数据流的获取状态&#xff0c;当这个ReadyState为o…...

C# 设计模式(结构型模式):代理模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;代理模式 在软件开发中&#xff0c;有时我们需要通过某种方式间接地访问一个对象&#xff0c;这时就可以使用代理模式&#xff08;Proxy Pattern&#xff09;。代理模式通过引入一个代理对象来控制对目标对象的访问…...

YOLO——pytorch与paddle实现YOLO

YOLO——pytorch与paddle实现YOLO 本文将深入探讨YOLO目标检测的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现基础的YOLO模型。我们将首先介绍YOLO的基本概念&#xff0c;这些理论基础是理解和实现YOLO网络的基础。通过PyTorch和PaddlePad…...

持续大额亏损,销量增幅有限,北汽蓝谷依旧黯然神伤

撰稿 | 行星 来源 | 贝多财经 “起了个大早&#xff0c;赶了个晚集”&#xff0c;用在如今的北汽蓝谷身上再合适不过。 2025年的第一个工作日&#xff0c;北汽蓝谷新能源科技股份有限公司&#xff08;SH:600733&#xff0c;简称“北汽蓝谷”&#xff09;对外披露了子公司北京…...

C# OpenCV机器视觉:背景减除与前景分离

在实验室的一角&#xff0c;阳光仿若一个急性子的小精灵&#xff0c;迫不及待地穿过窗帘缝隙&#xff0c;在阿强的桌面上欢快跳跃&#xff0c;洒下一片片斑驳陆离的光影&#xff0c;似乎在催促着阿强赶紧开启今日的奇妙探索。阿强端坐在桌前&#xff0c;眼神炽热地盯着眼前那台…...

C语言return与 ? :

上次讲解过一次函数&#xff0c;函数要配合return返回东西&#xff0c;但是在编写一些程序的时候我发现了很多冷门逻辑语法还没有掌握&#xff0c;当时讲课也是看一眼就过去了&#xff08;死去的记忆开始攻击我&#xff09; Return&#xff0c;爽&#xff01; 现在有一个小问…...

【论文阅读】SCGC : Self-supervised contrastive graph clustering

论文地址&#xff1a;SCGC : Self-supervised contrastive graph clustering - ScienceDirect 代码地址&#xff1a; https://github.com/gayanku/SCGC 摘要 图聚类旨在发现网络中的群体或社区。越来越多的模型使用自编码器&#xff08;autoencoders&#xff09;结合图神经网…...

python pyqt5+designer的信号槽和动态显示

至少需要两个文件&#xff0c;一个是python的主文件&#xff0c;一个是designer的UI文件 1.对UI文件的处理 首先需要将UI文件转化成python文件&#xff0c;并且引入到主文件中。 2.在主文件中接受UI上的一些动作和返回主文件处理的数据到UI界面上。 框中选中的部分&#xff0c…...

版本控制系统Helix Core 2024.2增强功能:与OpenTelemetry协议集成、Delta同步和传输等

“Perforce团队非常高兴为您带来Helix Core 2024.2版本&#xff0c;它拥有众多旨在提高团队效率、优化工作流程的增强功能。通过新的Open Telemetry协议集成&#xff0c;团队现在可以轻松将结构化日志集成到可观测性平台中。DeltaTransfer现在也适用于同步操作——这是2024.1版…...

certificate verify failed: unable to get local issuer certificate (_ssl.c:10

出现 “certificate verify failed: unable to get local issuer certificate (_ssl.c:10)” 这个错误通常是因为Python在尝试建立HTTPS连接时&#xff0c;无法验证服务器的SSL证书。这可能是因为本地系统中缺少必要的根证书&#xff0c;或者服务器的证书链不完整&#xff0c;导…...

关于大一上的总结

大一上总结 前言 源于学长们都喜欢写总结&#xff0c;今晚也正好听见一首有点触动心灵的歌&#xff0c;深有感慨&#xff0c;故来此写下这篇总结 正文 1.暑假前的准备 暑假之前姑且还是学习了基本的C语法&#xff0c;大概是到了结构体的地方&#xff0c;进度很慢&#xff0…...

JavaScript的基础知识

在鸿蒙操作系统的应用开发中&#xff0c;JavaScript作为一种广泛使用的编程语言&#xff0c;扮演着重要的角色。无论是构建用户界面还是实现业务逻辑&#xff0c;理解JavaScript的基础知识都是必不可少的。本文将深入探讨鸿蒙开发中与JavaScript相关的几个关键概念&#xff1a;…...

数据结构之单链表(超详解)

文章目录 1. 单链表1.1 概念、结构1.2 结点1.2.1 链表的性质 2. 链表的打印3. 尾插、头插创建结点尾插头插 4. 尾删、头删尾删头删 5. 查找指定结点6. 指定位置之前、之后插入数据指定位置之前插入数据指定位置之后插入数据 7. 删除指定位置结点7.1 删除指定位置之后结点8. 链表…...

告别编程困惑:GDB、冯诺依曼、操作系统速通指南

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 目录 前言 一…...

网络分析工具-tcpdump

文章目录 前言一、tcpdump基础官网链接命令选项详解常规过滤规则tcpdump输出 一、tcpdump实践HTTP协议ICMP状态抓包 前言 当遇到网络疑难问题的时候&#xff0c;抓包是最基本的技能&#xff0c;通过抓包才能看到网络底层的问题 一、tcpdump基础 tcpdump是一个常用的网络分析工…...

基于AI边缘计算盒子的智慧零售场景智能监控解决方案

一、方案背景 随着零售业的快速发展&#xff0c;传统零售模式面临着诸多挑战&#xff0c;如人力成本高、管理效率低、顾客体验不佳等。智慧零售借助人工智能、物联网等技术手段&#xff0c;实现对零售场景的全面感知和智能管理。AI边缘计算盒子作为智慧零售的关键技术之一&…...

STM32G431收发CAN

1.硬件连接 PB8作为CAN_RX&#xff0c;PB9作为CAN_TX&#xff0c;连接一个CAN收发器TJA1051T/3 2. CubeMX里配置CAN 设置连接FDCAN1的参数&#xff0c;使用1个标准过滤器&#xff0c;波特率位500K 使能FDCAN1的中断 3 自动生成代码 3.1 初始化 static void MX_FDCAN1_In…...

如何得到深度学习模型的参数量和计算复杂度

1.准备好网络模型代码 import torch import torch.nn as nn import torch.optim as optim# BP_36: 输入2个节点&#xff0c;中间层36个节点&#xff0c;输出25个节点 class BP_36(nn.Module):def __init__(self):super(BP_36, self).__init__()self.fc1 nn.Linear(2, 36) # …...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...