首页 > 其他分享 >base64图片文件上传OSS,下载OSS图片转换为InputStream,文件转base64,base64转文件工具类

base64图片文件上传OSS,下载OSS图片转换为InputStream,文件转base64,base64转文件工具类

时间:2023-08-18 23:57:12浏览次数:32  
标签:文件 String OSS base64 bytes file new null

base64图片文件上传OSS,下载OSS图片转换为InputStream,文件转base64,base64转文件工具类

OSSUtils.java

public class OSSUtils {
    private static Logger logger = LoggerFactory.getLogger(OSSUtils.class);

    private static final String ACCESS_ID = "阿里云oss参数accessId";
    private static final String ACCESS_KEY = "阿里云oss参数accessKey";

    public static final String OSS_END_POINT = "http://oss-cn-hangzhou.aliyuncs.com";

    //OSS cilent
    private static final OSSClient client = new OSSClient(OSS_END_POINT, ACCESS_ID, ACCESS_KEY);
    
    //base64图片文件上传OSS
    public boolean uploadAuthBase64FromPreUpdatePic(String key, String base64,String bucket) throws Exception {
        boolean errorCode = false;
        InputStream input = null;
        ObjectMetadata objectMeta = new ObjectMetadata();
        // 在metadata中标记文件类型
        objectMeta.setContentType("image/*");
        try {
            byte[] bytes = Base64Encoder.decode(base64.getBytes());
            objectMeta.setContentLength(bytes.length);
            input = new ByteArrayInputStream(bytes);

            PutObjectResult res = client.putObject(bucket, key, input, objectMeta);
            logger.info("PutObjectResult res=" + GsonUtils.toJson(res));
            // 校验文件MD5值
            errorCode = true;
        } catch (Exception e) {
            logger.error("", e);
        } finally {
            if (input != null) {
                input.close();
            }
        }
        return errorCode;
    }


    /**
     * 下载OSS图片转换为InputStream
     * @param key   图片路径
     * @param bucket  图片目录
     * @return
     * @throws Exception
     */
    public static InputStream getNormalPicObj(String key,String bucket) throws Exception{
        OSSObject object = client.getObject(bucket, key);
        InputStream objectContent = object.getObjectContent();
        return objectContent;
    }
    
}

FileUtil.java

import org.apache.commons.io.IOUtils;

import java.io.*;
import java.util.Base64;

/**
 * 文件工具类
 */
public class FileUtil {
    /**
     * 将文件转base64字符串
     * @param path
     * @return
     */
    public static  String fileToBase64(String path) {
        String base64 = null;
        InputStream in = null;
        try {
            File file = new File(path);
            in = new FileInputStream(file);
            byte[] bytes=new byte[(int)file.length()];
            in.read(bytes);
            base64 = Base64.getEncoder().encodeToString(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return base64;
    }

    /**
     * 将文件转base64字符串
     * @return
     */
    public static  String inputStreamToBase64(InputStream in) {
        String base64 = null;
        if (in == null) {
            return base64;
        }
        try {
            byte[] bytes = IOUtils.toByteArray(in);
            base64 = Base64.getEncoder().encodeToString(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return base64;
    }


    /**
     * 将文件转base64字符串
     * @param file
     * @return
     */
    public static  String fileToBase64(File file) {
        if(file == null){
            return null;
        }
        String base64 = null;
        InputStream in = null;
        try {
//            File file = new File(path);
            in = new FileInputStream(file);
            byte[] bytes=new byte[(int)file.length()];
            in.read(bytes);
            base64 = Base64.getEncoder().encodeToString(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return base64;
    }

    /**
     * BASE64解码成File文件
     * @param destPath
     * @param base64
     * @param fileName
     */
    public static File base64ToFile(String destPath,String base64, String fileName) {
        File file = null;
        //创建文件目录
        String filePath=destPath;
        File  dir=new File(filePath);
        if (!dir.exists() && !dir.isDirectory()) {
            dir.mkdirs();
        }
        BufferedOutputStream bos = null;
        java.io.FileOutputStream fos = null;
        try {
            byte[] bytes = Base64.getDecoder().decode(base64);
            file=new File(filePath+"/"+fileName);
            fos = new java.io.FileOutputStream(file);
            bos = new BufferedOutputStream(fos);
            bos.write(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bos != null) {
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return file;
    }

}

 

标签:文件,String,OSS,base64,bytes,file,new,null
From: https://www.cnblogs.com/oktokeep/p/17641854.html

相关文章

  • Base64及其Python实现
    1.什么是Base64Base64是一种基于64个可打印字符来表示二进制数据的表示方法Base64是一种编码方式,提及编码方式,必然有其对应的字符集合。在Base64编码中,相互映射的两个集合是:二进制数据{0,1}{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,......
  • 比较两个文件是否相同的办法
      原本是朴素的遍历写法,后面改为mmap后速度提升飞快(大部分时候一秒以内可以出结果)。可以用于比较两个文件内容是否相同,包括图片也可以(图片用open函数打开后是一堆乱码,相当于比较乱码)。Talkischeap,showmeyourcode。 #include<iostream>#include<fstream>#include<......
  • linux虚拟机中各服务端口及配置文件路径
    查询端口状况命令:netstat-an|grep端口号查询服务状态(服务是否开启)命令:systemctl  status服务名开启服务命令:systemctl  start  服务名21端口:FTP文件传输服务22端口:SSH协议、SCP(文件传输)、端口号重定向23/tcp端口:TELNET终端仿真服务25端口:SMTP简单邮件传输服务53......
  • C语言多文件编程中全局变量的声明与定义会遇到的问题
    C语言多文件编程中全局变量的声明与定义会遇到的问题目录C语言多文件编程中全局变量的声明与定义会遇到的问题描述:1.创建3个文件,分别是main.c、test.h、test.c,具体代码如下:1.1.1test.h1.1.2test.h1.1.3main.c1.1.4这样能直接编译通过。2.创建3个文件,分别是main.c、test.h、te......
  • 父/子进程文件描述符继承机制导致socket bind失败的问题
    此问题来自项目上,应用程序本身由它的父进程启动,父进程监听SIGCHLD信号,即子进程退出时,父进程会收到这个信号,然后立即通过execlp重新启动子进程,确保子进程异常崩溃会被重新拉起来。而子进程(我们实际的业务应用)也会在某些地方fork新的进程,干别的事情。出现的问题是,进程被重新拉起......
  • 阿里云OSS图片上传和显示注意点
    1.java.lang.IllegalArgumentException:Theobjectkey"/image-业务名称/20230818/20230818-订单号参数-accident.jpg"isinvalid.Anobjectnameshouldbebetween1-1023byteslongwhenencodedasUTF-8andcannotcontainLForCRorunsupportedcharsinX......
  • 使用appuploader工具发布证书和描述性文件教程
    使用APPuploader工具发布证书和描述性文件教程之前用AppCan平台开发了一个应用,平台可以同时生成安卓版和苹果版,想着也把这应用上架到AppStore试试,于是找同学借了个苹果开发者账号,但没那么简单,还要用到Mac电脑的钥匙串申请发布证书和上传ipa,可没有Mac,同学的大老远的也不方便拿过......
  • java实现大文件上传控件
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1. 通过form表单向后端发送请求         <formid="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="pos......
  • Linux的文件类型
    1.查看识别在某个目录下文件类型:$ls-ld<filename>2.文件可能的类型,跟着不一样的后缀1–:regularfile2d:directory3c:characterdevicefile4b:blockdevicefile5s:localsocketfile6p:namedpipe7l:sym......
  • java实现大文件上传组件
    ​ 文件上传下载,与传统的方式不同,这里能够上传和下载10G以上的文件。而且支持断点续传。通常情况下,我们在网站上面下载的时候都是单个文件下载,但是在实际的业务场景中,我们经常会遇到客户需要批量下载的场景,还有文件夹的下载场景。与传统业务需求相比,新的业务需求要求更高,难度也......