java实现文件上传入库、下载

数据库

CREATE TABLE `demand` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `images` blob,
  `file_name` varchar(50) DEFAULT NULL COMMENT '文件名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

实体类

/**
 * <p>
 * 
 * </p>
 *
 * @author author
 * @since 2023-03-30
 */
@Getter
@Setter
@TableName("Demand")
@ApiModel(value = "对象")
public class Demand implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("id")
    private Integer id;

    @ApiModelProperty("文件名称")
    private String fileName;

    @ApiModelProperty("文件")
    private byte[] images;
    
}

controller

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author author
 * @since 2023-03-30
 */
@Api(tags = "测试接口")
@RestController
@RequestMapping("/saveImage")
public class SaveImageController {

    @Resource
    SaveImageService saveImageService;
    
    /**
     * 文件上传后保存
     */
    @ApiOperation("文件上传后保存")
    @PostMapping("/saveFile")
    public Result<Boolean> saveFile(@RequestPart MultipartFile file){
        Boolean result = saveImageService.saveFile(file);
        return Result.ok(result);
    }
    
    /**
     * 根据id下载文件
     */
    @ApiOperation("根据id下载文件")
    @PostMapping("/downLoadFile")
    public Result<Void> downLoadFile(String id, HttpServletResponse response, HttpServletRequest request){
        saveImageService.downLoadFile(id,response,request);
        return Result.ok();
    }

serviceImpl

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author author
 * @since 2023-03-30
 */
@Slf4j
@Service
public class SaveImageServiceImpl extends ServiceImpl<SaveImageMapper, Demand> implements SaveImageService {

    /**
     * 文件上传后保存
     * @param file
     * @return
     */
    @Transactional(propagation = Propagation.REQUIRED)
    @Override
    public Boolean saveFile(MultipartFile file) {

        Demand saveImage = new Demand();
        //文件非空判断
        if (file.isEmpty()){
            throw new BusinessArgsException("文件为空", CommonErrorEnum.E_BAD_REQUEST);
        }
        //文件名
        saveImage.setFileName(file.getOriginalFilename());
        try {
            InputStream ins = file.getInputStream();
            ByteArrayOutputStream bus = new ByteArrayOutputStream();
            byte[] bytes = new byte[1024];
            int s ;
            while ((s = ins.read(bytes))!= -1){
                bus.write(bytes,0,s);
            }
            bus.close();
            ins.close();
            //将文件转为字节数组
            byte[] array = bus.toByteArray();
            //原本实体类中文件类型为blob,在存储时报错无法找到参数对应的blob类,在实体类改为byte[]后正常保存
//            Blob blob = new SerialBlob(array);
            saveImage.setImages(array);
        } catch (Exception e) {
            e.printStackTrace();
            throw new BusinessArgsException("文件处理异常", CommonErrorEnum.E_BAD_REQUEST);
        }
        return this.save(saveImage);
    }

    /**
     * 根据id下载文件
     */
    @Override
    public void downLoadFile(String id, HttpServletResponse response, HttpServletRequest request) {
        BufferedOutputStream opt = null;
        //根据id获取对象
        Demand image = this.getById(id);
        if (ObjectUtil.isEmpty(image) && ObjectUtil.isEmpty(image.getImages())){
            throw new BusinessArgsException("id获取的的对象为空",CommonErrorEnum.E_BUSINESS);
        }
        byte[] images = image.getImages();
        BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(images));

        try {
            request.getSession();
            opt = new BufferedOutputStream(response.getOutputStream());
            byte[] buffer = new byte[1024];
            int i ;
            while ((i = bis.read(buffer))!= -1) {
                opt.write(buffer, 0, i);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bis != null){
                    bis.close();
                }
                if (opt != null){
                    opt.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现导入法定节假日文件入库,需要以下步骤: 1. 使用Java读取Excel或CSV文件,获取节假日信息。 2. 将读取到的节假日信息转换成Java对象,例如定义一个Holiday类,包含日期和节日名称等属性。 3. 使用Java连接数据库,将节假日信息存入数据库表中。可以使用JDBC连接数据库,也可以使用ORM框架,例如MyBatis或Hibernate。 4. 在程序中实现一个导入功能按钮或命令,用户点击该按钮或执行该命令后,程序读取指定的Excel或CSV文件,将节假日信息导入数据库。 以下是一个Java示例代码,演示如何读取CSV文件并将节假日信息存入MySQL数据库: ``` import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class HolidayImporter { public static void main(String[] args) { String csvFile = "holidays.csv"; String dbUrl = "jdbc:mysql://localhost:3306/mydatabase"; String dbUser = "username"; String dbPassword = "password"; try (BufferedReader br = new BufferedReader(new FileReader(csvFile)); Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword)) { String line; while ((line = br.readLine()) != null) { String[] fields = line.split(","); String date = fields[0]; String name = fields[1]; String sql = "INSERT INTO holiday(date, name) VALUES (?, ?)"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, date); stmt.setString(2, name); stmt.executeUpdate(); } } System.out.println("Import success!"); } catch (Exception e) { e.printStackTrace(); } } } ``` 这个示例代码使用了Java的标准库和JDBC连接MySQL数据库,将读取到的节假日信息存入holiday表中。你只需要将代码中的数据库连接信息和CSV文件路径替换成你自己的即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值