> Java > java지도 시간 > 본문

springboot 업로드 파일을 만드는 방법

坏嘻嘻
풀어 주다: 2018-09-14 16:22:26
원래의
3720명이 탐색했습니다.

저는 고급 프런트엔드 처리에 익숙하지 않기 때문에 MVC를 통해 직접 콘텐츠를 전송하고 싶어서 프런트엔드에 값을 전달하는 문제를 처리하기 위해 Thymeleaf 템플릿을 선택했습니다.

  1. application.properties 파일

#访问超市时间的设置ribbon.
ConnectTimeout=60000ribbon.
ReadTimeout=60000
# 开启多文件上传
spring.servlet.multipart.
enabled=true 
spring.servlet.multipart.file-size-threshold =0
#单个文件大小
#spring.http.multipart.maxFileSize=10MB
#设置总上传的数据大小
#spring.http.multipart.maxRequestSize=10MB
#升级到2.0后需要改成
#单个文件大小spring.servlet.
multipart.max-file-size=10Mb 
#设置总上传的数据大小 
spring.servlet.multipart.
max-request-size=10Mb
#上传路径upload_path=D:/file_statics
#下载路径download_path=D:/file_statics
로그인 후 복사

2.controller code

import java.io.
BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.stream.
Collectors;import javax.servlet.
http.HttpServletResponse;import org.
apache.commons.lang3.StringUtils;
import org.springframework.beans.
factory.annotation.Value;import org.
springframework.web.bind.annotation.
RequestMapping;import org.springframework.
web.bind.annotation.RequestMethod;import org.
springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.
ResponseBody;import org.springframework.web.
bind.annotation.RestController;import org.
springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.
mvc.support.RedirectAttributes;import com.
vinord.common.model.ResultView;import com.
vinord.common.util.Constains;@RestController
public class FileUploadController
{
    @Value("${upload_path}")
    private final String upload_path ="D:/file_statics";

    @Value("${download_path}")
    private final String download_path ="D:/file_statics";

    /**
     * 单个文件上传
     * @param file
     * @param redirectAttributes
     * @return
     */
    @RequestMapping("uploadFile")
    public ResultView singleFileUpload(@RequestParam("file") 
    MultipartFile file,RedirectAttributes redirectAttributes) {
        ResultView result = new ResultView();
        if (file.isEmpty()) {
            redirectAttributes.addFlashAttribute("message", "请选择文件进行上传");
            result.setCode(Constains.STATUS_ZERO);
            result.setMsg("请选择文件进行上传!");
            return result;
        }

        try {
            byte[] bytes = file.getBytes();

            String filename = file.getOriginalFilename();
            String name = filename.substring(0,filename.lastIndexOf("."));
            String formatDate = System.currentTimeMillis()+"";
            int index = filename.indexOf(".");
            String savefilename = name + formatDate+ filename.substring(index);

            Path path = Paths.get(upload_path+ File.separator+savefilename);
            Files.write(path, bytes);

            redirectAttributes.addFlashAttribute("message","成功上传文件: '" + file.getOriginalFilename() + "'");

            result.setCode(Constains.STATUS_ONE);
            result.setMsg("上传成功");
        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }    /**
     * 多个文件上传
     * @param files
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/upload/batch", method = RequestMethod.POST)
    public ResultView batchUpload(@RequestParam("files")MultipartFile[] files) {
        ResultView result = new ResultView();

        String uploadedFileName = Arrays.stream(files).map(x -> x.getOriginalFilename())    
                    .filter(x -> !StringUtils.isEmpty(x)).collect(Collectors.joining(" , "));
        if (StringUtils.isEmpty(uploadedFileName)) {
            result.setCode(Constains.STATUS_ZERO);
            result.setMsg("文件上传失败,文件为空!");
            return result;
        }


        try {
            saveUploadedFiles(Arrays.asList(files));
        } catch (IOException e) {
            result.setCode(Constains.STATUS_ZERO);
            result.setMsg("文件上传异常"+e.getMessage());
            return result;
        }

        result.setCode(Constains.STATUS_ONE);
        result.setMsg("上传成功");
        return result;
    }


    private  void saveUploadedFiles(List<MultipartFile> files) throws IOException {
        for (MultipartFile file : files) {
            if (file.isEmpty()) {
                continue;
            }
            byte[] bytes = file.getBytes();

            String filename = file.getOriginalFilename();
            String name = filename.substring(0,filename.lastIndexOf("."));
            String formatDate = System.currentTimeMillis()+"";
            int index = filename.indexOf(".");
            String savefilename = name + formatDate+ filename.substring(index);

            Path path = Paths.get(upload_path+ File.separator+ savefilename);
            Files.write(path, bytes);
        }
    }    /**
     * 下载
     * @param res
     * @throws IOException
     */
    @RequestMapping("download")  
    public void download(HttpServletResponse res) throws IOException {

        String fileName = "CustomLogControl1536898060373.java";
        res.setHeader("content-type", "application/octet-stream");
        res.setContentType("application/octet-stream");
        res.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        OutputStream os = null;
        try {
            os = res.getOutputStream();
            bis = new BufferedInputStream(new FileInputStream(new File(download_path+ File.separator+fileName)));
            int i = bis.read(buff);
            while (i != -1) {
                os.write(buff, 0, buff.length);
                os.flush();
                i = bis.read(buff);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bis != null) {
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


}
로그인 후 복사

관련 권장 사항:

SpringBoot+Thymeleaf는 html 파일 소개(유사한 포함 기능)를 구현합니다._html/css_WEB-ITnose

우아한 사용 마이바티스

위 내용은 springboot 업로드 파일을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿