Java教程:从本地磁盘批量读取所有图片文件并上传保存至数据库

本章继上一章下载所有图片的反向,为提高效率而定

源码:

/**
     * 图片载入
     *
     * @param code
     * @email wfeil211@foxmail.com
     * @return
     */
    @PostMapping("loadingImage")
    @ApiOperation(value = "图片载入", notes = "适用web端")
    public String loadingImage(String merchantNo) {
        logger.info("收到图片载入请求》》》》》》》》》》》》》》》");
        String path = "D:\\tmp";    //这里输入指定文件夹路径(绝对路径)
        File dir = new File(path);
        String[] fileList = dir.list();    //获取指定文件夹中所有文件的文件名
        int index = 0;
        for (int i = 0; i < fileList.length; i++) {

            //将图片文件转化为字节数组字符串,并对其进行Base64编码处理
            InputStream inputStream = null;
            byte[] buffer = null;
            //读取图片字节数组
            try {
                index++;
                logger.info("开始加载第:"+index+" 张照片");
                logger.info("文件名:"+fileList[i]);    //打印出图片文件名

                inputStream = new FileInputStream(path + "\\" + fileList[i]);
                int count = 0;
                while (count == 0) {
                    count = inputStream.available();
                }
                buffer = new byte[count];
                inputStream.read(buffer);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (inputStream != null) {
                    try {
                        // 关闭inputStream流
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            // 对字节数组Base64编码
            String base64 = "data:image/jpg;base64,"+ new BASE64Encoder().encode(buffer);
            base64 = base64.replaceAll("[\\s*\t\n\r]", "");
            //logger.info("照片base64为:"+base64);

            //载入员工信息
            String chineseName = fileList[i].substring(0,fileList[i].indexOf("-"));
            logger.info("员工姓名为:"+chineseName);
            //部门
            String suffix = fileList[i].substring(fileList[i].indexOf("-")+1);
            String departName = suffix.substring(0, suffix.indexOf("-"));
            logger.info("员工部门为:"+departName);

            List<EmployeeInfo> employeeInfos = employeeService.getEmployeeByChineseName(merchantNo, chineseName);
            if(employeeInfos == null || employeeInfos.size()==0){
                logger.info("员工:"+chineseName+" 未找到照片");
                continue;
            }
            //假如多个员工用部门筛选
            for(EmployeeInfo emp:employeeInfos){
                if(departName.equals(emp.getDepartment().getDepartName()) && StringUtils.isNotBlank(emp.getCardNo())){
                    //相同部门写入图片
                    processImage(emp,base64);
                    logger.info("员工:"+chineseName+" 照片上传完成,序号:"+index);

                }
            }
        }

        logger.info("图片载入完成,共计:"+index+" 张照片 》》》》》》》》》》》》》》》");
        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值