电脑上按Ctrl + D,下次访问更方便
服务分类

Spring boot文件上传下载的三种方式

以前写SSM项目的时候,部署如果是用Tomact的话,上传文件存放会变得非常简单,文件上传可以传到webapp下。是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了。解决SpringBoot项目的文件上传和下载至少有三种方式:

一、将文件存放在硬盘的某个目录,用Java去读取下载:

适用场景:这种方式适用于小项目,单个服务器部署。

上传文件:

/**
     * 上传文件
     */
    @RequestMapping(method = RequestMethod.POST, path = "/upload")
    @ResponseBody
    public String upload(@RequestPart("file") MultipartFile file) {
        try {
            // 得到上传时的文件名
            String originalFilename = file.getOriginalFilename();
            String fileSavePath = "/myproject/upload/";
            file.transferTo(new File(fileSavePath + originalFilename));
        } catch (Exception e) {
            e.printStackTrace();
            return "上传失败";
        }
        return "上传成功";
    }

下载文件:

/**
     * 下载文件
     *
     */
    @RequestMapping("/{fileName}")
    public void renderPicture(@PathVariable("fileName") String fileName, HttpServletResponse response) {
        try {
            byte[] bytes = FileUtil.toByteArray("/myproject/files/" + fileName);
            response.getOutputStream().write(bytes);
        } catch (Exception e) {
            //如果找不到文件就返回一个默认图片
            try {
                response.sendRedirect("/static/img/default.gif");
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }

二、将文件存放在硬盘的某个目录,配置Nginx去下载;

适用场景:这种方式适用于不考虑分布式部署的项目。

上传方式跟上面的一样。下载文件则需要配置Nginx去访问文件。

三、使用云存储上传下载。

适用场景:大型项目建议使用,尤其是分布式部署的项目。

阿里云、七牛云、腾讯云等等,有好多家,都可以实现。有的可以通过Javascript前端上传,有的则需要上传到服务器然后再往云存储上传。云存储提供商会提供免费子域名来访问,有的也可以绑定自己的域名,还可以提供图片防盗链等等功能。

发表回复

登录后才能评论
联系我们

联系我们

微信专属客服:

fuwu360微信客服

工作时间:周一至周五,9:30-18:30,节假日休息

返回顶部