当前位置: 首页 > 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)启动器,启动!

 

http://www.lryc.cn/news/424730.html

相关文章:

  • 某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]
  • pythonselenium自动化测试实战项目(完整、全面)
  • 如何选择合适的虚拟机软件?对比Parallels Desktop 和VMware Fusion 使用虚拟机畅玩黑神话悟空
  • ESP32FreeRTOS开发笔记:2.定义、多任务与优先级调度
  • 【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗
  • Linux下查看各进程的swap
  • 最后一个单词的长度 简单字符串问题
  • Autodesk Mudbox 2024:重塑创意边界的3D数字绘画与雕刻利器
  • 【python下用sqlite3, 多线程下报错,原因和解决 】
  • 学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信
  • 【DataKit系列】数据迁移-实例搭建步骤(二)
  • 发送jsonp请求(前后端如何实现)
  • Leetcode—1239. 串联字符串的最大长度【中等】(unordered_set)
  • Spring Boot 3.x Rest API统一异常处理最佳实践
  • 线程的进阶学习
  • 13.1 Python 正则表达式基础
  • 贪心算法介绍(Greedy Algorithm)
  • 谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发
  • 爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍
  • 【安卓】WebView的用法与HTTP访问网络
  • Mysql中文存入乱码???
  • 安美数字酒店宽带运营系统 weather.php 任意文件读取漏洞复现
  • BGP的反射器(四)
  • proxy负载均衡
  • 两个若依系统,不能同时登录问题解决方案
  • Unity Render Streaming项目实践经验
  • Rvt/dgn格式的模型如何提取外轮廓,用于压平倾斜模型或者地形,进行BIM+GIS融合
  • sqli-labs-master靶场通关
  • hive sql 处理多层 json 数组
  • Dom 元素转换 Image 图片 (截图)