base64では、画像ファイルを変換し、クラウドアリにアップロード

ステップ1:base64utilを作成します。

package com.yuantu.util;
import org.springframework.util.Base64Utils;



/**
 * @author Administrator
 * @Title: ImageBase64Upload
 * @ProjectName ytmonitor
 * @Description: TODO
 * @date 2019/6/411:53
 */

public class ImageBase64Upload {
    /**
      * @Description: 文件上传
      * @param  // 接收base64值(请求参数);
      * @return
      * @MethodName
      * @Author chenglong
      * @date 2019/6/4 11:56
     */
    public String ImageBase64UploadFile(String base64Data){
        try {
            //base64,前缀
            String dataPrix = "";
            //base64,后缀
            String data = "";
            if(base64Data == null || "".equals(base64Data)){
                throw new Exception("上传失败,上传图片数据为空");
            }else{
                String [] d = base64Data.split("base64,");
                if(d != null && d.length == 2){
                    dataPrix = d[0];
                    data = d[1];
                }else{
                    throw new Exception("上传失败,数据不合法");
                }
            }
            //文件扩展名
            String suffix = "";
            if("data:image/jpeg;".equalsIgnoreCase(dataPrix)){//data:image/jpeg;base64,base64编码的jpeg图片数据
                suffix = ".jpg";
            } else if("data:image/x-icon;".equalsIgnoreCase(dataPrix)){//data:image/x-icon;base64,base64编码的icon图片数据
                suffix = ".ico";
            } else if("data:image/gif;".equalsIgnoreCase(dataPrix)){//data:image/gif;base64,base64编码的gif图片数据
                suffix = ".gif";
            } else if("data:image/png;".equalsIgnoreCase(dataPrix)){//data:image/png;base64,base64编码的png图片数据
                suffix = ".png";
            }else{
                throw new Exception("上传图片格式不合法");
            }
            //生成的文件名称
            String tempFileName = RandomUtil.generateNumString(6) + suffix;
            //因为BASE64Decoder的jar问题,此处使用spring框架提供的工具包
            byte[] bs = Base64Utils.decodeFromString(data);
            try{
                //使用oss文件上传
                return OSSManageUtils.uploadFile(bs,tempFileName);
            }catch(Exception ee){
                throw new RuntimeException("OSS文件上传失败,"+ee.getMessage());
            }
        } catch (Exception ex) {
            return "OSS文件上传失败,"+ex.getMessage();
        }
    }
   /* @Test
    public void testUpload(){
        String images="data:image/jpeg;base64,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";
        ImageBase64UploadFile(images);
    }*/
}

ステップ2:ossManageUtilを作成します。

package com.yuantu.util;
import com.aliyun.oss.OSSClient;
import com.yuantu.config.OSSConfigure;
import java.io.ByteArrayInputStream;
import java.util.Date;

/**
 * @author chenglong
 * @Title: OSSUtils
 * @ProjectName ytmonitor
 * @Description: TODO
 * @date 2019/6/416:14
 */
public class OSSManageUtils {
    /**
     * 上传OSS服务器文件 @Title: uploadFile
     *  @param bs spring 上传的文件
     * fileName 文件名
     *  @throws Exception 设定文件
     *  @return url 请求路径
     */
    public static String uploadFile(byte[] bs,String fileName) throws Exception {
        //随机名处理
        // 加载配置文件,初始化OSSClient
        OSSConfigure ossConfigure = new OSSConfigure("oss.properties");
        OSSClient ossClient = new OSSClient(ossConfigure.getEndpoint(), ossConfigure.getAccessKeyId(),
                ossConfigure.getAccessKeySecret());
        //创建存贮空间
        //ossClient.createBucket(ossConfigure.getBucketName());
        // 上传文件
        ossClient.putObject(ossConfigure.getBucketName(),fileName,new ByteArrayInputStream(bs));
        //设置url过期时间为100年
        Date expiration=new Date(System.currentTimeMillis()+3600L*1000*24*365*100);
        String url = ossClient.generatePresignedUrl(ossConfigure.getBucketName(), fileName, expiration).toString();
        // 关闭OSSClient
        ossClient.shutdown();
        return url;
    }



}


ステップ3:OSSの設定クラスを作成します。

package com.yuantu.config;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @author chenglong
 * @Title: OSSConfig
 * @ProjectName ytmonitor
 * @Description: TODO
 * @date 2019/6/415:38
 */
@NoArgsConstructor
@AllArgsConstructor
@Data
public class OSSConfigure {
    //地域节点
    private String endpoint;
    //accesskeyId
    private String accessKeyId;
    //accesskeyId
    private String accessKeySecret;
    //存储空间
    private String bucketName;
    //访问路径
    private String accessUrl;

    /**
     * 通过配置文件.properties文件获取,这几项内容。
     *
     * @param storageConfName
     * @throws IOException
     */
    public OSSConfigure(String storageConfName) throws IOException {
        Properties prop = new Properties();
        String url=Thread.currentThread().getContextClassLoader().getResource(storageConfName).getFile();
        InputStream is= new FileInputStream(url);
        prop.load(is);
        endpoint = prop.getProperty("Endpoint").trim();
        accessKeyId = prop.getProperty("AccessKey").trim();
        accessKeySecret = prop.getProperty("AccessKeySecret").trim();
        bucketName = prop.getProperty("BucketName").trim();
        accessUrl = prop.getProperty("accessUrl").trim();
    }

}

ステップ4:依存関係を注ぎ、プロファイルを作成し、ここでのプロファイルが一つずつありません示しています。

	 <!--阿里云OSS-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>2.8.3</version>
        </dependency>

最後に、あなたのコントローラのコールこのImageBase64Upload.ImageBase64Upload(「base64文字列」)関数は、達成するために!
あなたが達成するために他の機能を持つようにしたい場合は、このブログを参照:https://blog.csdn.net/java_oss/article/details/71194519を
あなたはサムネイルを持っているしたい場合。:あなたはこのブログを参照することができます
https://blog.csdn.net/weixin_39973810/article/details/86545054

おすすめ

転載: blog.csdn.net/weixin_39507514/article/details/90799073