1. 程式人生 > 程式設計 >springmvc模式的上傳和下載實現解析

springmvc模式的上傳和下載實現解析

這篇文章主要介紹了springmvc模式下的上傳和下載實現解析,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

此處上傳的功能依舊是採用表格上傳。檔案格式依舊是

<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">

後臺則是

 @RequestMapping("/upload")
  public String upload(MultipartFile file,String userName,HttpServletRequest request) throws IOException {
    String filename = file.getOriginalFilename();

    String suffix = filename.substring(filename.lastIndexOf("."));

    if(suffix.equalsIgnoreCase(".jpg")){
      String uuid = UUID.randomUUID().toString();
      //FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E://"+uuid+suffix));

      file.transferTo(new File("D://"+System.currentTimeMillis()+suffix));//位置儲存在硬碟上
//      file.transferTo(new File(request.getServletContext().getRealPath("/")+"static/userImages/"+file));
//      儲存在專案裡的目錄下
      request.setAttribute("result","上傳成功");
      return "/result.jsp";
    }else{
      request.setAttribute("result","上傳失敗");
      return "/result.jsp";
    }
  }

相比之前的傳統式上傳,springmvc模式下封裝了許多繁瑣的過程,通過transferTo即可實現一些相應的操作

而下載也是相應的簡化了許多

@RequestMapping("/download")
  public void download(String filename,HttpServletResponse response,HttpServletRequest request) throws IOException {
    response.setHeader("content-disposition","attachment;filename="+filename);

    ServletOutputStream outputStream = response.getOutputStream();

    String path = request.getServletContext().getRealPath("images");

    File file = new File(path,filename);

    byte[] bytes = FileUtils.readFileToByteArray(file);

    outputStream.write(bytes);

    outputStream.close();
  }

一般框架會省去許多重複性的工作,但底層的基本原理還是要清楚過程

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。