重庆江津网站设计公司电话,wordpress 二维码,西安优秀的集团门户网站建设费用,建设网站的一些基本代码1.问题描述#xff1a;
使用springboot开发一个项目#xff0c;开发文件上传的时候#xff0c;通常会将上传的文件存储到资源目录下的static里面#xff0c;然后在本地测试上传文件功能没有问题#xff0c;但是将项目打成jar包放到服务器上运行的时候就会报错#xff0c…1.问题描述
使用springboot开发一个项目开发文件上传的时候通常会将上传的文件存储到资源目录下的static里面然后在本地测试上传文件功能没有问题但是将项目打成jar包放到服务器上运行的时候就会报错找不到对应目录。或者可以将上传文件存储到和jar包同级的目录下但是无法通过http访问到文件 2.项目打成jar包后如何设置文件资源存储路径
!!!保存上传的资源文件路径路径在部署jar包同级目录
//这里 /img/uploadFile/ 可以更改为不同层级的目录可以跟开发时的静态目录统一String path System.getProperty(user.dir)/static/img/uploadFile/;File dir new File(path);
// 如果不存在则创建目录if(!dir.exists()){dir.mkdirs();}3.设置http访问上传的静态资源文件
在项目中创建一个config包然后新建一个java类uploadConfig用来设置上传的路径
package com.curry.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration
public class uploadConfig implements WebMvcConfigurer {Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(/static/**).addResourceLocations(classpath:/static/,file:static/);}
}接下来就可以通过http://ip:port/img/uploadFile/test.png来访问该文件了 如果static的目录结构和项目里面的一样的话就跟访问打jar包前一样访问即可相当于通过目录结构访问相应的文件。
完整代码
package com.xxx.xxx.xxxx.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.Calendar;Controller
RequestMapping(/admin)
public class UploadController {RequestMapping(/upload)public String upload(MultipartFile file,Model model) throws IOException {//校验文件是否为空if (file.isEmpty()){model.addAttribute(path,请选择文件上传!);return admin/upload;}//图片重命名防止图片名称重复可以使用时间戳或者UUID生成我这里不需要担心文件名重复所以没做String originalFilename file.getOriginalFilename();String filename originalFilename;//上传图片并判断是否有年份文件夹Calendar calendar Calendar.getInstance();int year calendar.get(Calendar.YEAR);
// String pre System.getProperty(user.dir) /src/main/resources/static/img/paper/ year /;String pre System.getProperty(user.dir) /static/img/paper/ year /;//file.mkdir创建一个文件夹成功则返回true失败则返回false。失败表明File对象指定的路径已经存在或者由于整个路径还不存在该文件夹不能被创建。File file1 new File(pre);file1.mkdir();String path pre filename;file.transferTo(new File(path));model.addAttribute(path,path);return admin/upload;}}