盐森 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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)