springboot实现文件下载和文件上传

1.文件上传功能:直接看controller

@PostMapping("/uploadFile")
public @ResponseBody String singleFileUpload(@RequestParam("file")MultipartFile file){

    //判断文件是否为空
    if(file.isEmpty()){
       return "文件为空,上传失败!";
    }
    try{
        //获得文件的字节流
        byte[] bytes=file.getBytes();
        //获得path对象,也即是文件保存的路径对象
        Path path= Paths.get(FILE_DIR+file.getOriginalFilename());
        //调用静态方法完成将文件写入到目标路径
        Files.write(path,bytes);
        return "恭喜上传成功!";
    }catch (IOException e){
        e.printStackTrace();
    }
    return "未知异常";
}

其中FILE_DIR是上传文件的路径,可以自己根据选择设置,比如我这里设置FILE_DIR="f://file//" 这个路径

2.文件上传的html页面

<form method="POST" action="/uploadFile" enctype="multipart/form-data">
    <input type="file" id="file_input"name="file" /><br/><br/>
    <input type="submit"  value="Submit" />
</form>

OK,到这里,文件上传功能已经实现,那么现在是文件下载功能

3.直接看文件下载的Controller

  @RequestMapping(value="/download",method = RequestMethod.GET)
    public void download( HttpServletResponse response){
        //要上传的文件名字
        String fileName="com.seven.xuanshang.apk";
        //通过文件的保存文件夹路径加上文件的名字来获得文件
        File file=new File(FILE_DIR,fileName);
        //当文件存在
        if(file.exists()){
            //首先设置响应的内容格式是force-download,那么你一旦点击下载按钮就会自动下载文件了
            response.setContentType("application/force-download");
            //通过设置头信息给文件命名,也即是,在前端,文件流被接受完还原成原文件的时候会以你传递的文件名来命名
            response.addHeader("Content-Disposition",String.format("attachment; filename=\"%s\"", file.getName()));
            //进行读写操作
            byte[]buffer=new byte[1024];
            FileInputStream fis=null;
            BufferedInputStream bis=null;
            try{
                fis=new FileInputStream(file);
                bis=new BufferedInputStream(fis);
                OutputStream os=response.getOutputStream();
                //从源文件中读
                int i=bis.read(buffer);
                while(i!=-1){
                    //写到response的输出流中
                    os.write(buffer,0,i);
                    i=bis.read(buffer);
                }
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                //善后工作,关闭各种流
                try {
                    if(bis!=null){
                        bis.close();
                    }
                    if(fis!=null){
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }

4.接下来是下载功能的html端的实现

<a href="/download">点击下载XX文件</a>
5.至此,文件的upload和download功能已经完成


阅读更多
个人分类: springboot 上传图片
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭