盐森 2022-11-23 23:43 采纳率: 85.7%
浏览 5
已结题

Spring MVC:实现文件的上传和下载,上传成功了,但是下载不行,点击图片,会报404错误。

package com.itheima.controller;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.itheima.pojo.Resource;
import com.itheima.utils.JSONFileUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.util.ArrayList;
import java.util.List;
@Controllerpublic class FileController {    //上传文件    @RequestMapping("/fileUpLoad")   
public String fileUpLoad(MultipartFile[] files, HttpServletRequest request) throws Exception{
String path="D:\\idea项目保存位置\\MVC\\src\\main\\webapp\\files\\";        
ObjectMapper mapper = new ObjectMapper();        
//判断files为空,如果为空,上传失败;否则才开始进行上传操作        
if (files!=null && files.length>0){            
//开始文件上传操作            
//遍历每个文件            
for (MultipartFile file:files){                
String filename=file.getOriginalFilename();               
ArrayList<Resource> list = new ArrayList<>();                String json= JSONFileUtils.readFile(path+"/files.json");                if (json.length()!=0){                    
list=mapper.readValue(json,                            
new TypeReference<List< Resource >>() {                            });                    
for (Resource resource:list){                        
if (filename.equals(resource.getName())){                            String[] split=filename.split("\\.");                            filename=split[0]+"(1)."+split[1];                        
}                    
}                
}                
String filepath=path+filename;                
file.transferTo(new File(filepath));                
list.add(new Resource(filename));                
json=mapper.writeValueAsString(list);                
JSONFileUtils.writeFile(json,path+"/files.json");            }           
 request.setAttribute("msg","(上传成功)");            
return "forward:fileload.jsp";        }        
request.setAttribute("msg","(上传失败)");       
 return "forward:fileload.jsp";    }   
 
@ResponseBody   
@RequestMapping(value = "/getFilesName",    
produces = "text/html;charset=utf-8")    
public String getFilesName(HttpServletRequest request, HttpServletResponse response) throws Exception{
String path="D:\\idea项目保存位置\\MVC\\src\\main\\webapp\\";        
String json=JSONFileUtils.readFile(path);        
return json;    }
`


运行结果是这样的,就是下载那里显示不出来

img

然后在我的项目那里可以看到上传的图片

img

img

我的jsp是这样的

img

  • 写回答

1条回答 默认 最新

  • 夜郎king 2022博客之星IT其它领域TOP 12 2022-11-24 07:58
    关注

    这种直接访问D盘的肯定是会报404的,需要使用http协议访问

    img

    本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月13日
  • 已采纳回答 12月5日
  • 专家已采纳回答 12月4日
  • 修改了问题 11月23日
  • 展开全部

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?