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

从springBoot框架服务器上下载文件 自定义一个启动器

         在springboot框架中下载服务器存储的图片:

1)springboot默认访问放行的目录只有static,在static目录下存放图片资源

2)编译后的static目录中有一个1.png

 

2.5)编写控制器:

@Controller
//@RequestMapping("/upload")
public class UploadController {@RequestMapping("/download")public void download( String imgName,HttpServletRequest request,HttpServletResponse response) throws IOException {response.setContentType("image/png"); // 根据实际文件类型设置response.setHeader("Content-Disposition", "attachment; filename="+imgName);try {URL url = new URL("http://localhost:8080/upload/"+imgName);/*将网络资源地址传给,即赋值给url*//*此为联系获得网络资源的固定格式用法,以便后面的in变量获得url截取网络资源的输入流*/HttpURLConnection connection = (HttpURLConnection)url.openConnection();connection.setRequestMethod("GET");DataInputStream in = new DataInputStream(connection.getInputStream());/*此处也可用BufferedInputStream与BufferedOutputStream*/DataOutputStream out = new DataOutputStream(response.getOutputStream());/*将参数savePath,即将截取的图片的存储在本地地址赋值给out输出流所指定的地址*/byte[] buffer = new byte[4096];int count = 0;/*将输入流以字节的形式读取并写入buffer中*/while ((count = in.read(buffer)) > 0) {out.write(buffer, 0, count);}out.close();/*后面三行为关闭输入输出流以及网络资源的固定格式*/in.close();connection.disconnect();} catch (Exception e) {
//            System.out.println(e + fileUrl + savePath);
//            return null;System.out.println("上传异常"+e.getMessage());System.out.println(e);}}}

3)访问控制器

 

 自定义一个启动器:

1)创建一个Maven项目,在pom.xml文件中:

            一:所有启动器配置类的创建使用spring-boot-autoconfigure实现

            二:spring-boot-configuration-processor找到boot的配置文件实现映射.

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.11</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies>

2)Maven目录结构:

        DiyProperties用来映射配置文件

        DiyBean用来装配diyProperties对象

        DiyConfigration是一个配置类容器,存放bean对象.



 

 DiyProperties:

package com.xja.start;import org.springframework.boot.context.properties.ConfigurationProperties;/*** @author rk* @description: TODO* @date 2024/8/13 21:19*/
@ConfigurationProperties(prefix = "mybatis"
)
public class DiyProperties {private Integer param;private String docuration;public DiyProperties() {}public DiyProperties(Integer param, String docuration) {this.param = param;this.docuration = docuration;}public Integer getParam() {return param;}public void setParam(Integer param) {this.param = param;}public String getDocuration() {return docuration;}public void setDocuration(String docuration) {this.docuration = docuration;}
}

 



 DiyBean:

package com.xja.bean;import com.xja.start.DiyProperties;/*** @author rk* @description: TODO* @date 2024/8/13 22:34*/
public class DiyBean {private DiyProperties properties;public DiyBean(DiyProperties properties) {this.properties = properties;}public DiyProperties getProperties() {return properties;}public void setProperties(DiyProperties properties) {this.properties = properties;}
}

 



DiyConfigration:

package com.xja.config;import com.xja.bean.DiyBean;
import com.xja.start.DiyProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author rk* @description: TODO* @date 2024/8/13 22:29*/
@Configuration
@EnableConfigurationProperties({DiyProperties.class})
public class DiyConfigration {
//    @Autowired
//    private DiyBean diyBean;@Beanpublic DiyBean properties(DiyProperties diyProperties){return new DiyBean(diyProperties);}}

spring.factories:

        本Maven项目的配置文件,这个文件给springboot框架看的,boot框架会根据该配置文件实现对配置类的装配.

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xja.config.DiyConfigration

3)安装并在其他项目启用启动器:

  安装:

启用:

        1)新建maven项目启用该坐标

        2)配置application.yml

        3)入口不要忘写了

        4)启动器,启动!

 

相关文章:

从springBoot框架服务器上下载文件 自定义一个启动器

在springboot框架中下载服务器存储的图片&#xff1a; 1&#xff09;springboot默认访问放行的目录只有static&#xff0c;在static目录下存放图片资源 2&#xff09;编译后的static目录中有一个1.png 2.5)编写控制器&#xff1a; Controller //RequestMapping("/upload&q…...

某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]

文章目录 某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏…...

pythonselenium自动化测试实战项目(完整、全面)

前言 之前的文章说过&#xff0c; 要写一篇自动化实战的文章&#xff0c; 这段时间比较忙再加回家过11一直没有更新博客&#xff0c;今天整理一下实战项目的代码共大家学习。&#xff08;注:项目是针对我们公司内部系统的测试&#xff0c;只能内部网络访问&#xff0c;外部网络…...

如何选择合适的虚拟机软件?对比Parallels Desktop 和VMware Fusion 使用虚拟机畅玩黑神话悟空

随着技术的发展&#xff0c;虚拟机软件将更加高效地管理和分配系统资源。虚拟机软件扮演着越来越重要的角色。无论是软件开发者需要测试不同操作系统环境下的应用&#xff0c;还是普通用户希望在一台机器上同时运行多个操作系统&#xff0c;虚拟机软件都是不可或缺的工具。那么…...

ESP32FreeRTOS开发笔记:2.定义、多任务与优先级调度

FreeRTOS 是一种实时操作系统(RTOS),专门用于嵌入式系统。它之所以被称为 "FreeRTOS",是因为它是一个免费和开源的 RTOS。下面我们具体讨论一下 FreeRTOS 与 RTOS 的区别,以及 "free" 的含义。 一、什么是 RTOS? RTOS,全称 Real-Time Operating Sy…...

【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗

欢迎来到"花花 Show Python"&#xff0c;一名热爱编程和分享知识的技术博主。在这里&#xff0c;我将与您一同探索Python的奥秘&#xff0c;分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者&#xff0c;都能在这里找到有价值的信息和灵感。 自我介…...

Linux下查看各进程的swap

cat /etc/re*se Red Hat Enterprise Linux Server release 6.8 (Santiago) 简单的可以通过top命令查看 top 后 按 f 进入选择列界面 按 p 就会输出swap信息&#xff08;变为P&#xff09; 回车返回看到SWAP信息了 再按 F 再按p 按swap排序 再回车后就是各进程按swap排序…...

最后一个单词的长度 简单字符串问题

给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a; 输入&#xff1a;s "Hello World" 输出&#xff1a;5 解…...

Autodesk Mudbox 2024:重塑创意边界的3D数字绘画与雕刻利器

在数字艺术与设计领域&#xff0c;Autodesk Mudbox 2024以其卓越的性能和直观的操作界面&#xff0c;再次刷新了3D数字绘画与雕刻软件的标准。作为Autodesk家族的一员&#xff0c;Mudbox不仅继承了其家族强大的技术基因&#xff0c;更在细节上精雕细琢&#xff0c;为艺术家和设…...

【python下用sqlite3, 多线程下报错,原因和解决 】

在python下用sqlite3, 多线程 在UPDATE 或者INSERT的时候, 会报错 sqlite3.OperationalError: cannot commit - no transaction is active 1. 原因 多线程写冲突 非原子写操作&#xff1a;如果多个线程同时执行非原子写操作&#xff0c;可能会导致数据覆盖或不一致。 2. 解…...

学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信

目录 一、端口号 port 二、套接字 socket 1、原理 2、socket函数介绍 三、TCP实现网络通信 1、原理 2、TCP通信原理图 3、TCP相关函数 1&#xff09;bind 绑定 2&#xff09;listen 监听 3&#xff09;accept 接收连接请求 4&#xff09;recv 接收 5&#xff09;sen…...

【DataKit系列】数据迁移-实例搭建步骤(二)

说明&#xff1a;此文档仅包含使用DataKit进行数据迁移时&#xff0c;搭建迁移任务相关教程&#xff0c;不包含一些必须的前置配置步骤&#xff0c;和环境要求等&#xff0c;请优先学习“【DataKit系列】数据迁移-使用说明&#xff08;一&#xff09;”文档。 数据迁移实例搭建…...

发送jsonp请求(前后端如何实现)

发送jsonp请求(前后端如何实现) 前端 $.ajax({url: /api/jsonp,type: get,data: { id: 123 }, // 参数dataType: jsonp,jsonp: cb, // 回调函数的参数名jsonpCallback: successfn,// 回调函数contentType: "application/json; charsetutf-8",success: function(resp…...

Leetcode—1239. 串联字符串的最大长度【中等】(unordered_set)

2024每日刷题&#xff08;155&#xff09; Leetcode—1239. 串联字符串的最大长度 实现代码 class Solution { public:bool charSet(string & s) {unordered_set<char> charSet(s.begin(), s.end());// true表示有重复// false表示唯一return s.size() ! charSet.s…...

Spring Boot 3.x Rest API统一异常处理最佳实践

上一篇&#xff1a;Spring Boot 3.x Rest API最佳实践之统一响应结构 下一篇&#xff1a;Spring Boot 3.x Web单元测试最佳实践 参考著作&#xff1a;Error Handling for REST with Spring 在Spring MVC应用中&#xff0c;要对web表示层所抛出的异常进行捕获处理有多种方式&…...

线程的进阶学习

线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时效果等价于pthread_exit 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程 (main函数) return都会造成 进程结束 线程资源回收 ---pthread_join int pthread_ca…...

13.1 Python 正则表达式基础

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...

贪心算法介绍(Greedy Algorithm)

贪心算法介绍&#xff08;Greedy Algorithm&#xff09; 1. 贪心算法概念简介 ​ 贪心算法Greedy Algorithm是一种在每一步选择中都采取当前状态下最优&#xff08;或最有利&#xff09;决策的算法策略&#xff0c;以期望通过这样的局部最优决策达到全局最优解。它适用于那些…...

谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发

文章目录 一&#xff0c;175-商城业务-检索服务-检索查询参数模型分析抽取二&#xff0c;176-商城业务-检索服务-检索返回结果模型分析抽取三&#xff0c;177-商城业务-检索服务-检索DSL测试-查询部分四&#xff0c;178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…...

爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍

RPC (Remote Procedure Call) 是远程调用的意思。 在 Js 逆向时&#xff0c;本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信&#xff0c;这样可以直接调用浏览器中的一些函数方法&#xff0c;不必去在意函数具体的执行逻辑&#xff0c;可以省去大量…...

2024必看!AI写教材的实用工具,一键生成20万字教材且低查重!

编写教材难题与AI工具解决方案 编写教材&#xff0c;如何更好地适应多样化需求呢&#xff1f;不同年级学生的认知能力差异显著&#xff0c;内容过于深入或过于浅显都会造成困扰&#xff1b;在课堂教学和自主学习等多种场景中&#xff0c;教材的呈现方式需要灵活调整&#xff1…...

兔抗FANCI抗体亲和纯化,IP-WB全流程兼容设计,一站式解决FANCI蛋白分析功能

产品概述由艾美捷Bethyl Laboratories推出的FANCI抗体&#xff08;货号A301-254A&#xff09;是一款针对人源范可尼贫血互补组I蛋白&#xff08;FANCI&#xff09;的兔多克隆抗体&#xff0c;经抗原亲和纯化&#xff0c;以未偶联完整IgG形式提供。该抗体特异性识别人源FANCI蛋白…...

在线音视频处理工具实测对比:视频压缩、格式转换、音频提取哪家强?

一、为什么要关注在线音视频工具&#xff1f;先看一组数据。根据多家市场研究机构的报告&#xff0c;全球视频处理相关市场规模近年来持续增长&#xff0c;视频内容的生产量每年都在翻倍。各大平台每天新增的视频播放时长以亿计——这意味着越来越多的普通用户和创作者&#xf…...

2026最新论文降AI攻略:实测5款高效辅助工具,查降一体与结构重构选哪个

最近看了一些行业报告&#xff0c;AI工具在写作方面的普及率真的已经超乎想象了。 很多大学生在写论文时也都习惯用AI来辅助寻找灵感、提高效率。 与此同时&#xff0c;相关部门针对人工智能写作出台了一系列规定&#xff0c;各大学术检测平台也都在不断升级AIGC检测算法。 现…...

JPlag:17种编程语言的代码抄袭检测利器,如何精准识别学术不端与代码剽窃?

JPlag&#xff1a;17种编程语言的代码抄袭检测利器&#xff0c;如何精准识别学术不端与代码剽窃&#xff1f; 【免费下载链接】JPlag State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs. 项目地址: https://gi…...

Poppins几何无衬线字体:9种字重与多语言支持的技术实现深度解析

Poppins几何无衬线字体&#xff1a;9种字重与多语言支持的技术实现深度解析 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins Poppins几何无衬线字体是一款由Indian Type Foundry…...

PC显示器HDR选购指南:DisplayHDR标准详解与实战应用

1. 从混乱到清晰&#xff1a;PC显示器HDR标准的演进与现状如果你最近在挑选一台新的PC显示器&#xff0c;尤其是为了游戏、影音剪辑或者专业设计&#xff0c;那么“HDR”这个标签你一定绕不开。它被印在包装盒上&#xff0c;出现在电商页面的标题里&#xff0c;是销售员口中的“…...

突破性APK安装器:在Windows上高效运行Android应用的革命性方案

突破性APK安装器&#xff1a;在Windows上高效运行Android应用的革命性方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否渴望在Windows电脑上无缝运行Android应…...

在模型广场根据任务需求与预算快速筛选合适的大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在模型广场根据任务需求与预算快速筛选合适的大模型 对于开发者而言&#xff0c;面对市场上众多的大模型&#xff0c;如何快速找到…...

UWB车内目标探测技术【附仿真】

✨ 长期致力于UWB雷达、活体、目标检测、生命体征、信号模型研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;UWB雷达生命体征信号建模与自适应杂波抑制…...