java实现多图片上传且写入数据库

墨尘 89 0

controller:


@RestController

@RequestMapping("/upload")

public class uploadImgController {


    @Autowired

    private UploadImgService uploadImgService;


    @PostMapping("/imgs")

    public SysResult uploadImgs(List<MultipartFile> files,String fileName) throws IOException {

        Boolean upload = uploadImgService.uploadImgs(files,fileName);

        if (upload){

            return SysResult.build(200,"上传成功");

        }else {

            return SysResult.build(201,"请选择你要上传的图片");

        }

    }


}

serviceImpl:


@Service

public class UploadImgServiceImpl implements UploadImgService {


    @Autowired

    private UploadImgMapper uploadImgMapper;


    private static final String PATH = "D://NewUploadImg/";


    @Override

    public Boolean uploadImgs(List<MultipartFile> files,String fileName) throws IOException {

        if (files.size() < 1) {

            return false;

        }

        for (MultipartFile file : files) {

            if (Objects.isNull(file)) return false;

            int fileLen = 0;

            InputStream is = file.getInputStream();

            //获取图片名称

            String NewName = file.getOriginalFilename();

            //保存路徑

            File filePath = new File(PATH+fileName+"/");

            if (!filePath.exists()) {

                filePath.mkdirs();

            }

            OutputStream os = new FileOutputStream(filePath.getPath() + File.separator + NewName);

            byte[] bs = new byte[1024];

            int len;

            while ((len = is.read(bs)) != -1) {

                os.write(bs, 0, len);

                os.flush();

            }


            //获取图片尺寸

            BufferedImage sourceImg = ImageIO.read(new FileInputStream(filePath.getPath() + File.separator + NewName));

            //获取图片宽度

            int imgWidth = sourceImg.getWidth();

            //获取图片高度

            int imgHeight = sourceImg.getHeight();

            //获取图片后缀

            int lastIndexOf = NewName.lastIndexOf(".");

            //获取文件的后缀名 .jpg

            String imgSuffix = NewName.substring(lastIndexOf);

            //獲取圖片kb、

            FileInputStream fis  = new FileInputStream(filePath.getPath() + File.separator + NewName);

            fileLen = fis.available();

            String imgOmen = bytes2kb(fileLen);


            //向数据库写入

            UploadImageEntity uploadImageEntity = new UploadImageEntity();

            uploadImageEntity.setImgName(NewName);

            uploadImageEntity.setImgHeight(imgHeight);

            uploadImageEntity.setImgWide(imgWidth);

            uploadImageEntity.setImgSuffix(imgSuffix);

            uploadImageEntity.setImgOmen(imgOmen);

            uploadImageEntity.setImgSize(imgOmen);

            uploadImageEntity.setFileName(fileName);

            uploadImageEntity.setFilePath(String.valueOf(filePath));


            int insert = uploadImgMapper.uploadimage(uploadImageEntity);

            if (insert < 0) {

                throw new ServerException("保存数据库失败");

            }

        }

        return true;

    }


    public static String bytes2kb(long bytes) {


        BigDecimal filesize = new BigDecimal(bytes);


        BigDecimal megabyte = new BigDecimal(1024 * 1024);


        float returnValue = filesize.divide(megabyte, 2, BigDecimal.ROUND_UP)


                .floatValue();


        if (returnValue > 1)


            return (returnValue + "MB");


        BigDecimal kilobyte = new BigDecimal(1024);


        returnValue = filesize.divide(kilobyte, 2, BigDecimal.ROUND_UP)


                .floatValue();


        return (returnValue + "KB");


    }


}


标签: #java #io

  • 评论列表

留言评论