zoukankan      html  css  js  c++  java
  • 上传下载 demo

    import org.apache.commons.io.IOUtils;
    import org.apache.commons.lang.StringUtils;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    @RestController
    @RequestMapping("/file")
    public class FileController {
    /**
    * 参数名file与ControllerTest.whenUploadSuccess里new MockMultipartFile的第一个参数名要相同
    */
    @PostMapping("/upload")
    public FileInfo update(MultipartFile file) throws Exception {
    System.out.println(file.getName());
    System.out.println(file.getOriginalFilename());
    System.out.println(file.getContentType());
    System.out.println(file.getSize());
    String path = "xxx";
    String extension = StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
    File localFile = new File(path, System.currentTimeMillis() + "." + extension);
    file.transferTo(localFile);
    return new FileInfo(localFile.getAbsolutePath());
    }
    @GetMapping("/download")
    public void download(HttpServletRequest request, HttpServletResponse response) throws Exception {
    //从request中获取下载文件路径
    String filePath = request.getParameter("xxxx");
    //try ()里定义的InputStream和OutputStream会被自动释放,不需要在finally里手动释放,JDK 1.7后出现的此语法
    try (InputStream inputStream = new FileInputStream(filePath);
    OutputStream outputStream = response.getOutputStream()) {
    response.setContentType("application/x-download");
    //attachment;filename=指定默认下载文件名
    response.addHeader("Content-Disposition", "attachment;filename=download.txt");
    IOUtils.copy(inputStream, outputStream);
    outputStream.flush();
    }
    }
    }
  • 相关阅读:
    京东POP2020新店新规
    hdu 1203
    hdu 1513
    有关Canvas的一点小事—canvas数据和像素点
    有关Canvas的一点小事—图像绘制
    有关Canvas的一点小事--鼠标绘图
    Javascript和jquery事件--键盘事件KeyboardEvent
    [转]DOM0,DOM2,DOM3事件处理方式区别
    Javascript和jquery事件--鼠标事件的小结
    Javascript和jquery事件--鼠标移动事件mousemove
  • 原文地址:https://www.cnblogs.com/xmanblue/p/8110517.html
Copyright © 2011-2022 走看看