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

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

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

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

2.5)编写控制器:

java 复制代码
@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的配置文件实现映射.

java 复制代码
<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:

java 复制代码
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:

java 复制代码
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:

java 复制代码
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;

    @Bean
    public DiyBean properties(DiyProperties diyProperties){
        return new DiyBean(diyProperties);
    }


}

spring.factories:

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

java 复制代码
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xja.config.DiyConfigration

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

安装:

启用:

1)新建maven项目启用该坐标
2)配置application.yml
3)入口不要忘写了
4)启动器,启动!
相关推荐
不会就选b几秒前
Linux之make,makefile
linux·运维·服务器
小刘|2 分钟前
Spring AI 结构化输出 + 大模型参数全解(含千问调优)
java·后端·spring
云烟成雨TD3 分钟前
Spring AI Alibaba 1.x 系列【79】图执行生命周期的可观测性基础设施
java·人工智能·spring
日取其半万世不竭3 分钟前
新服务器买完 24 小时内要做什么?安全加固清单
运维·服务器·安全
copyer_xyf4 分钟前
FastAPI 项目骨架搭建
前端·后端·python
code monkey.5 分钟前
【Linux之旅】HTTP 协议解析:从请求格式到构建 Web 服务器
linux·服务器·网络·http
霸道流氓气质7 分钟前
Java 单元测试生成大量 Excel 测试数据实战指南
java·单元测试·excel
LoserChaser9 分钟前
Flask 文件上传服务器 - 知识点总结
服务器·python·flask
智码看视界10 分钟前
老梁聊全栈:CSS3 高级特性—Flex/Grid 布局体系深度解析
前端·css3·布局·flexbox·grid·工程实践·全栈工程师
io无心12 分钟前
基于Image 2的多配件商品图生成技术实现(已开源)
java·image2