SpringBoot 文件或图片上传与下载功能的实现

网友投稿 353 2023-01-29

SpringBoot 文件或图片上传与下载功能的实现

导入依赖(pom.xml)

commons-io

commons-io

2.6

commons-fileupload

commons-fileupload

1.3.3

javax.servlet

javax.servlet-api

4.0.1

net.coobird

thumbnailator

0.4.8

全局配置 application.properties

# 上传文件大小

spring.servlet.multipart.max-file-size=5MB

spring.servlet.multipart.max-request-size=5MB

创建 WebMvcConfig 配置类  静态资源映射

@Configuration

public class WebMvcConfig implements WebMvcConfigurer {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

ApplicationHome h = new ApplicationHome(getClass());

File jarF = h.getSource();

String dirPath = jarF.getParentFile().toString()+"/upload/";

String os = System.getProperty("os.name");

if (os.toLowerCase().startsWith("win")) { //如果是Windows系统

registry.addResourceHandler("/upload/**").addResourceLocations("file:"+dirPath);

} else {

registry.addResourceHandler("/upload/**").addResourceLocations("file:"+dirPath);

}

}

}

文件或图片上传

控制层

// 上传文件

@ResponseBody

@RequestMapping("/upload")

public String fileUpload(@RequestParam("files") MultipartFile files) throws IOException {

// // win系统 上传路径保存设置

// // 获取项目路径

// File projectPath = new File(ResourceUtils.getURL("classpath:").getPath());

// // 绝对路径=项目路径+自定义路径

// File pathFile = new File(projectPath.getAbsolutePath(), "static/upload/");

// if (!pathFile.exists()) {

// pathFile.mkdirs();

// }

// //上传文件地址

// UUID uuid = UUID.randomUUID();

// File serverFile = new File(pathFile, uuid + "_" + files.getOriginalFilename());

// files.transferTo(serverFile);

//

// String imgPath = ("/upload/" + uuid + "_" + files.getOriginalFilename()).replace("\\", "/");

//

// return imgPath;

// linux服务器 上传路径保存设置

// 项目路径 /home/www/

File pathFile = new File("/home/www/upload/");

if (!pathFile.exists()) {

pathFile.mkdirs();

}

//上传文件地址

UUID uuid = UUID.randomUUID();

File serverFile = new File(pathFile, uuid + "_" + files.getOriginalFilename());

files.transferTo(serverFile);

String imgPath = ("/upload/" + uuid + "_" + files.getOriginalFilename()).replace("\\", "/");

return imgPath;

}

HTML页面

Ajax 无刷新上传

  

  

    

    

    

  

  

js

//普通图片上传

$('#img_upload').click(function () {

var formData = new FormData();

//获取选择的文件

$.each($('input[name="files"]'),function (index,item) {

formData.append("files",item.files[0])

});

//发送异步请求

$.ajax({

method:'post',

url: '[[@{/user/upload}]]', // 文件上传接口

data:formData,

processData: false,

contentType:false,

success:function (data) {

//成功返回触发的方法

$('#imgPath').val(data);

alert("上传成功");

},

//请求失败触发的方法

error:function () {

alert("上传失败");

}

});

});

文件或图片下载

控制层

@RequestMapping(value="/download")

public String downloads(HttpServletResponse response ,HttpServletRequest request) throws Exception{

//要下载的图片地址

String path = request.getServletContext().getRealPath("/upload");

String fileName = "基础语法.jpg";

//1、设置response 响应头

response.reset(); //设置页面不缓存,清空buffer

response.setCharacterEncoding("UTF-8"); //字符编码

response.setContentType("multipart/form-data"); //二进制传输数据

//设置响应头

response.setHeader("Content-Disposition",

"attachment;fileName="+URLEncoder.encode(fileName, "UTF-8"));

File file = new File(path,fileName);

//2、 读取文件--输入流

InputStream input=new FileInputStream(file);

//3、 写出文件--输出流

OutputStream out = response.getOutputStream();

byte[] buff =new byte[1024];

int index=0;

//4、执行 写出操作

while((index= input.read(buff))!= -1){

out.write(buff, 0, index);

out.flush();

}

out.close();

input.close();

return null;

}

HTML页面

点击下载

SpringBoot 文件或图片上传与下载就可以了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中Swing类实例讲解
下一篇:今日赌运免费api(今日麻将赌运)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~