base64 编码转png上传minio

 public static InputStream base64ConvertPNG(String base64){
        BASE64Decoder decoder = new BASE64Decoder();
        //解码
        base64 = base64.replaceAll(" ", "+");
        try {
            byte[] buffer = decoder.decodeBuffer(base64.replace("data:image/png;base64", "")
                    .replace("data:image/jpeg;base64", "")
                    .replace("data:image/jpeg;base64", ""));
            for(int i = 0;i<buffer.length;i++){
                if(buffer[i] < 0){
                    buffer[i] += 256;
                }
            }
            //生成流
            ByteArrayInputStream stream = new ByteArrayInputStream(buffer);
            return stream;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
public SysFile uploadInputStream(String baseString) {
        try {
            InputStream inputStream = Base64ToPngUtils.base64ConvertPNG(baseString);
            // 上传并返回访问地址
            String url = uploadInputStream(inputStream);
            SysFile sysFile = new SysFile();
            sysFile.setUrl(url);
            return R.ok(sysFile);
        }
        catch (Exception e)
        {
            log.error("上传文件失败", e);
            return R.fail(e.getMessage());
        }
    }

   /**
     * 文件上传接口
     *
     * @param stream 上传的文件
     * @return 访问地址
     * @throws Exception
     */
    public String uploadInputStream(InputStream stream) throws Exception{
        String fileName = StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),IdUtils.fastUUID(),Seq.getId(Seq.uploadSeqType),"png");
        try(InputStream inputStream = stream){
            PutObjectArgs args = PutObjectArgs.builder()
                .bucket(minioConfig.getBucketName())
                .object(fileName)
                .stream(stream, stream.available(), PutObjectArgs.MAX_PART_SIZE)
                .contentType(ViewContentType.PNG.getType())
                .build();
            client.putObject(args);
            IoUtils.closeQuietly(inputStream);
            return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
        }catch (Exception e){
            throw new RuntimeException(e);
        }
    }


import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 文件信息
 * 
 * @author taihang
 */
public class SysFile
{
    /**
     * 文件名称
     */
    private String name;

    /**
     * 文件地址
     */
    private String url;

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getUrl()
    {
        return url;
    }

    public void setUrl(String url)
    {
        this.url = url;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("name", getName())
            .append("url", getUrl())
            .toString();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Apache POI 库来读取 Excel 文件并将其换为 base64 字符串,然后使用 MinIO Java 客户端将其上传MinIO。 以下是一个示例代码,假设你已经添加了 Apache POI 和 MinIO 客户端的依赖: ```java import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import io.minio.MinioClient; import io.minio.errors.MinioException; public class ExcelToMinio { private static final String MINIO_ENDPOINT = "http://localhost:9000"; private static final String MINIO_ACCESS_KEY = "minio_access_key"; private static final String MINIO_SECRET_KEY = "minio_secret_key"; private static final String BUCKET_NAME = "my-bucket"; private static final String OBJECT_NAME = "my-file.xlsx"; public static void main(String[] args) { try { // Read Excel file InputStream excelInputStream = new FileInputStream("path/to/my/file.xlsx"); Workbook workbook = new XSSFWorkbook(excelInputStream); // Convert Excel to base64 string ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); workbook.write(outputStream); String base64String = java.util.Base64.getEncoder().encodeToString(outputStream.toByteArray()); // Initialize MinIO client MinioClient minioClient = new MinioClient(MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY); // Upload to MinIO InputStream base64InputStream = new java.io.ByteArrayInputStream(base64String.getBytes(StandardCharsets.UTF_8)); minioClient.putObject(BUCKET_NAME, OBJECT_NAME, base64InputStream, base64String.length(), null, null, null); System.out.println("File uploaded successfully"); } catch (IOException | MinioException e) { System.out.println("Error occurred: " + e.getMessage()); } } } ``` 解释一下代码: 1. 在 `main` 方法中,我们首先读取 Excel 文件并将其换为 `Workbook` 对象。 2. 然后,我们将 `Workbook` 对象写入 `ByteArrayOutputStream` 中,并将其换为 base64 字符串。 3. 接下来,我们初始化 MinIO 客户端,并使用 `putObject` 方法将 base64 字符串作为输入流上传MinIO 中。 4. 如果上传成功,我们将在控制台输出一条消息。 需要注意的是,这个示例代码中仅限于处理 `.xlsx` 格式的 Excel 文件。如果你需要处理 `.xls` 格式的文件,你需要使用 `HSSFWorkbook` 类代替 `XSSFWorkbook` 类。另外,如果你需要上传其他类型的文件,你需要将 `putObject` 方法中的 `contentType` 参数设置为正确的 MIME 类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值