springboot头像上传之后无法访问

当controller里的方法上传了文件到你项目里的resources/static目录下,此时如果想要访问他,是不可以访问的,这是tomcat的保护措施, 服务器不能对外部暴露真实的资源路径

上传一张图片后,检查目录发现文件已经成功上传到指定的目录下,但无法通过地址拿到,重启项目后可以拿到。后来发现在上传一张照片后,target目录下并没有立即生成上传的文件,所以访问不到。

 解决办法: 需要配置映射路径。(可以将文件上传这个操作请求到另一个服务器,称为文件上传服务器,因本项目不大,所以不需要)

配置映射路径,请求/blog/images/userAvatar/** 相当于请求本地文件  System.Property(user.dir)相当于工作目录(D:\\~~~~)\src\main\resoureces\static\blog\imagesuserAvatar\

配置拦截器之后却出现新的问题  

所有的css js 样式都无法访问 只有刚刚配置的图片可以访问

说的是 这些资源没有配置映射  也就是拦截器将所有static下的资源都拦截了导致无法访问

在后边继续添加静态资源映射后 css  js  

问题解决

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,实现头像上传并回显的步骤如下: 1. 添加文件上传依赖 在`pom.xml`中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> ``` 2. 编写上传页面 在HTML页面中添加上传表单: ```html <form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit" value="Upload"/> </form> ``` 3. 编写上传接口 在控制器中添加上传接口: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file, Model model) { String fileName = StringUtils.cleanPath(file.getOriginalFilename()); try { FileUploadUtil.saveFile(uploadDir, fileName, file); } catch (IOException e) { e.printStackTrace(); } model.addAttribute("message", "File uploaded successfully!"); model.addAttribute("fileName", fileName); return "upload-result"; } ``` 其中,`FileUploadUtil`是一个工具类,用于保存文件: ```java public class FileUploadUtil { public static void saveFile(String uploadDir, String fileName, MultipartFile multipartFile) throws IOException { Path uploadPath = Paths.get(uploadDir); if (!Files.exists(uploadPath)) { Files.createDirectories(uploadPath); } try (InputStream inputStream = multipartFile.getInputStream()) { Path filePath = uploadPath.resolve(fileName); Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING); } catch (IOException ioe) { throw new IOException("Could not save image file: " + fileName, ioe); } } } ``` 4. 显示上传结果 在上传成功后,跳转到上传结果页面,显示上传的文件名和头像: ```html <h1>Upload Result</h1> <p th:text="'File uploaded successfully: ' + ${fileName}"></p> <img th:src="@{${'/uploads/' + fileName}}" width="200" height="200"/> ``` 其中,`/uploads/`是上传文件保存的目录。需要在`application.properties`中添加以下配置: ```properties spring.servlet.multipart.enabled=true spring.servlet.multipart.file-size-threshold=2KB spring.servlet.multipart.max-file-size=200MB spring.servlet.multipart.max-request-size=215MB # Upload directory for files file.upload-dir=uploads ``` 在控制器中添加注入`uploadDir`的代码: ```java @Value("${file.upload-dir}") private String uploadDir; ``` 5. 运行应用程序 现在,启动Spring Boot应用程序并访问上传页面。选择要上传的文件并单击“上传”按钮。上传成功后,将显示上传结果页面,并显示上传的文件名和头像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值