我更新并显示了头像图片,但头像在Spring Boot中没有更改,为什么?

我使用Spring Boot" title="Spring Boot">Spring Boot开发一个网站,开发了上传头像图片的功能,更新头像并显示时,头像没有变化,文件夹中的图片已经更改,为什么?

问题是http缓存?

我的简单项目:

Dropbox链接到我的项目

(注意:您需要在TestingController中更改本地路径)

回答:

您无法立即看到上传的图片,因为您将图片保存在应用程序的静态文件中。您可以在文件夹中看到已保存的图像,但如果调用url则看不到。如果您在上传文件后刷新正在运行的项目(项目根目录并按F5键),则应该可以看到它。

但是更好的解决方案是您必须@RequestMapping加载图片并在浏览器中显示它。

在您的项目上构建,尝试像这样使用它:

import java.io.IOException;

import java.net.MalformedURLException;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.util.stream.Stream;

import org.json.JSONObject;

import org.springframework.core.io.Resource;

import org.springframework.core.io.UrlResource;

import org.springframework.http.ResponseEntity;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

@Controller

public class TestingController {

private final Path p = Paths.get("/Users/devin/Documents/workspace-sts-3.8.1.RELEASE/testing/src/main/resources/static/uploads/images");

@RequestMapping(value={ "/", "/home"})

public String home(){

return "home";

}

@RequestMapping(value = "/post_upload_avatar_file", method = RequestMethod.POST)

@ResponseBody

public Object uploadAvatarFile(@RequestParam("uploadfile") MultipartFile uploadfile) {

JSONObject resJsonData=new JSONObject();

try {

if(uploadfile.isEmpty()){

System.out.println("Empty");

}

Files.copy(uploadfile.getInputStream(), p.resolve(uploadfile.getOriginalFilename()));

resJsonData.put("status", 200);

resJsonData.put("message", "Success!");

resJsonData.put("data", uploadfile.getOriginalFilename());

}catch (Exception e) {

System.out.println(e.getMessage());

resJsonData.put("status", 400);

resJsonData.put("message", "Upload Image Error!");

resJsonData.put("data", "");

}

return resJsonData.toString();

}

@GetMapping("files/{filename:.+}")

@ResponseBody

public ResponseEntity<Resource> serverFile(@PathVariable String filename){

Resource file = loadAsResource(filename);

return ResponseEntity

.ok()

.body(file);

}

public Resource loadAsResource(String filename) {

try {

Path file = p.resolve(filename);

Resource resource = new UrlResource(file.toUri());

if(resource.exists() || resource.isReadable()) {

return resource;

}

else {

System.out.println("no file");

}

} catch (MalformedURLException e) {

System.out.println(e);

}

return null;

}

public Stream<Path> loadAll() {

try {

return Files.walk(p, 1)

.filter(path -> !path.equals(p))

.map(path -> p.relativize(path));

} catch (IOException e) {

System.out.println(e);

}

return null;

}

}

在这段代码中,我没有实现异常和错误处理。

您可以像以前一样上传图片。然后,您可以调用另一个URL在浏览器中接收图片。

http://localhost:8080/files/testing.png

图片应该是回应。

请查看这两个资源以获取完整的解决方案。

Spring文件上传-后端

spring文件上传-前端

以上是 我更新并显示了头像图片,但头像在Spring Boot中没有更改,为什么? 的全部内容, 来源链接: utcz.com/qa/425145.html

回到顶部