用nginx做文件服务器,并通过java代码进行上传下载

1.下载nginx 并启动

直接用默认文件夹html就好,在html目录里新建一个文件夹用来装上传的图片

2.在新建的文件夹中放一张图片用浏览器测试是否能访问

3.新建一个数据库表来存放上传的文件路径

CREATE TABLE `tb_swiper` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `title` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '轮播图标题',
  `path` varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '轮播图图片路径',
  `is_deleted` int(1) DEFAULT NULL COMMENT '逻辑删除',
  PRIMARY KEY (`id`),
  KEY `swiper` (`title`,`is_deleted`) USING BTREE COMMENT '轮播图联合索引定位轮播图'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

4.文件上传接口

这里只有controller层代码,mapper层用的mybatis-plus ,所以只需在service简单的调用mapper.insert()没什么好说的

@PostMapping("upload")
    public Object upload(@RequestParam("file") MultipartFile file){
        String originName = file.getOriginalFilename();
        Set<String> set = new HashSet<>();
        set.add(".png");
        set.add(".jpeg");
        set.add(".jpg");
        int count = 0;
        for(int i = 0; i < originName.length(); i++){
            if(originName.charAt(i) == '.'){
                count = i;
                break;
            }
        }
        String endName = originName.substring(count);
        String fileType = originName.substring(count + 1);
        if(!set.contains(endName)){
            return new String("上传的文件类型错误,只能上传png,jpeg,jpg类型的文件");
        }
        try {
            String path="D:\\nginx-1.22.1\\html\\swiper\\"+originName;
            file.transferTo(new File(path));
            FileDto fileDto=new FileDto();
            fileDto.setPath(path);
            fileDto.setTitle(originName);
            fileDto.setIs_deleted(0);
            fileService.save(fileDto);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return success("上传成功");
    }

5.文件路径列表接口 

简单的返回列表

@GetMapping("list")
    public Object list(){
        return success(fileService.fileDtoList());
    }

sql:

select * from tb_swiper where is_deleted=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值