SpringBoot系列(11):文件上传实战(提供包括NIO在内的多种实现方式)

摘要: 在开发企业级应用项目业务模块期间,“上传文件/附件”的功能相信每个小伙伴都遇见过,甚至有的曾以代码实战过。本文Debug将带领各位小伙伴重新回温一下在Spring Web应用中如何实现文件的上传,其中提供了包括Java NIO在内的多种方式。

内容:在企业级应用项目的开发过程中,“上传文件/附件”这一功能相信很多小伙伴都实现过,当然啦,其实现方式也是迥异不同。接下来,Debug就给各位小伙伴展示一下在Java Web应用中如何实现文件的上传。

在介绍实战之前,我们先来创建一个数据库表appendix,用于记录存储每个业务对象上传上来的图片的详情,包括其所属的业务对象的注解、所属业务模块、图片名称、大小、存储的磁盘路径等等,其DDL如下所示:

CREATE TABLE `appendix` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `module_id` int(11) DEFAULT NULL COMMENT '所属模块记录主键id',
  `module_code` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '所属模块编码',
  `module_name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '所属模块名称',
  `name` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文件名称',
  `size` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文件大小',
  `suffix` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文件后缀名',
  `file_url` varchar(500) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '文件访问的磁盘目录',
  `is_active` tinyint(4) DEFAULT '1' COMMENT '是否有效(1=是;0=否)',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='附件(文件)上传记录';

一、接下来,我们先来介绍第一种方式吧,基于Java NIO的方式实现文件上传功能

1、首先,创建FileController,用于接收前端上传过来的文件以及其他业务信息,其源代码如下所示:

@RestController
@RequestMapping("file")
public class FileController extends AbstractController{
    @Autowired
    private IFileService fileService;

    /**
     * 为商品上传图片
     * 上传文件-方式1:MultipartHttpServletRequest 接收前端参数
     * @return
     */
    @RequestMapping(value = "upload/v1",method = RequestMethod.POST)
    public BaseResponse uploadV1(MultipartHttpServletRequest request){
        BaseResponse response=new BaseResponse(StatusCode.Success);
        Map<String,Object> resMap= Maps.newHashMap();
        try {
            String url=fileService.uploadFileV1(request);

            resMap.put("fileUrl",url);
        }catch (Exception e){
            e.printStackTrace();
            response=new BaseResponse(StatusCode.Fail.getCode(),e.getMessage());
        }
        response.setData(resMap);
        return response;
}
}

更多请见:http://www.mark-to-win.com/tutorial/51033.html 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值