+
80
-

springboot如何实现文件上传与下载?

springboot如何实现文件上传与下载?

网友回复

+
0
-

Hmll表单上传文件

控制器

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.COOKIE;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.http.HttpResponse;
import java.util.List;

@Controller
public class HelloController {
 
    @GetMapping("/multiUpload")
    public String multiUpload() {
        return "multiUpload";
    }

    @PostMapping("/multiUpload")
    @ResponseBody
    public String multiUpload(HttpServletRequest request) {
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
        String filePath = "D:/";
        for (int i = 0; i < files.size(); i++) {
            MultipartFile file = files.get(i);
            if (file.isEmpty()) {
                return "上传第" + (i++) + "个文件失败";
            }
            String fileName = file.getOriginalFilename();
            String filenewName = filePath + fileName;
            File dest = new File(filenewName);
            try {
                file.transferTo(dest);
               
            } catch (IOException e) {
              
                return "上传第" + (i++) + "个文件失败";
            }
        }

        return "上传成功";

    }

}

2、在template2下的multiUpload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>

<form method="post" action="/multiUpload" enctype="multipart/form-data">
    <input type="file" name="file"><br>

    <input type="submit" value="提交">
</form>

</body>
</html>

下载文件

@RequestMapping("/downloadLocal")
public void downloadLocal(String path, HttpServletResponse response) throws IOException {
   // 读到流中
   InputStream inputStream = new FileInputStream(path);// 文件的存放路径
   response.reset();
   response.setContentType("application/octet-stream");
   String filename = new File(path).getName();
   response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));
   ServletOutputStream outputStream = response.getOutputStream();
   byte[] b = new byte[1024];
   int len;
   //从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1
   while ((len = inputStream.read(b)) > 0) {
       outputStream.write(b, 0, len);
   }
   inputStream.close();
} 

我知道答案,我要回答