package com.sl.zs.common.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.ObjectMetadata;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
@Component
public class OssUtils {
@Value("${oss.endpoint}")
private String endpoint;
@Value("${oss.accessKeySecret}")
private String accessKeySecret;
@Value("${oss.accessKeyId}")
private String accessKeyId;
@Value("${oss.bucketName}")
private String bucketName;
@Value("${oss.imgUrl}")
private String imgUrl;
@Value("${oss.packAge}")
private String packAge;
final static Long EXPIRESTIME = 1000 * 60 * 10L;
public String uploadImg(String base64) {
String fileName= OssUtils.generateRandomFilename()+".jpeg";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String name=packAge+"/"+dateFormat.format(new Date())+"/"+fileName;
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
byte[] imageBase64ToByteArray = ImageUtils.imageBase64ToByteArray(base64, 300*1024);
ossClient.putObject(bucketName, name, new ByteArrayInputStream(imageBase64ToByteArray));
System.out.println("上传图片至阿里云:"+bucketName + "/"+ name);
ossClient.shutdown();
return fileName;
}
public void upload(String str,String name) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
ossClient.putObject(bucketName, name,new ByteArrayInputStream(str.getBytes()));
ossClient.shutdown();
}
public void upload(InputStream inputStream,String name) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
ossClient.putObject(bucketName, name,inputStream);
ossClient.shutdown();
}
public void uploadPdf(InputStream inputStream,String name,String fileName) {
ObjectMetadata meta = new ObjectMetadata();
meta.setContentDisposition("attachment;filename="+fileName+".pdf");
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
ossClient.putObject(bucketName, name,inputStream,meta);
ossClient.shutdown();
}
public String getUrl(String ObjectName) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 60);
URL url = ossClient.generatePresignedUrl(bucketName, ObjectName, expiration);
ossClient.shutdown();
return imgUrl+url.getFile();
}
public String getUrl(String ObjectName,long second) {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
Date expiration = new Date(System.currentTimeMillis() + second);
URL url = ossClient.generatePresignedUrl(bucketName, ObjectName, expiration);
ossClient.shutdown();
return imgUrl+url.getFile();
}
public String getImage2Base64(String imagesUrl) {
if (StringUtils.isBlank(imagesUrl)) {
}
Date expiration = new Date(System.currentTimeMillis() + EXPIRESTIME);
OSS ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
URL signedUrl = ossClient.generatePresignedUrl(bucketName, imagesUrl, expiration);
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(signedUrl.toString());
CloseableHttpResponse response = null;
try {
response = client.execute(get);
if(200 != response.getStatusLine().getStatusCode()){
}
HttpEntity entity = response.getEntity();
byte[] data = EntityUtils.toByteArray(entity);
return Base64.encodeBase64String(data);
} catch (IOException e) {
}finally {
try {
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
public static String generateRandomFilename(){
String RandomFilename = "";
Random rand = new Random();
int random = rand.nextInt();
Calendar calCurrent = Calendar.getInstance();
int intDay = calCurrent.get(Calendar.DATE);
int intMonth = calCurrent.get(Calendar.MONTH) + 1;
int intYear = calCurrent.get(Calendar.YEAR);
String now = String.valueOf(intYear) + "_" + String.valueOf(intMonth) + "_" +
String.valueOf(intDay) + "_";
RandomFilename = now + String.valueOf(random > 0 ? random : ( -1) * random);
return RandomFilename;
}
}
package com.init.webSocket.utils;
import org.apache.commons.codec.binary.Base64;
public class ImageUtils {
public static byte[] imageBase64ToByteArray(String base64Str,int size) {
if (base64Str.contains(",")) {
base64Str = base64Str.split(",")[1];
}
byte[] decodeFromString = Base64.decodeBase64(base64Str);
if (decodeFromString.length / 1024 > size) {
log.error("base64图片超出大小限制,base64:" +" 限制大小:"+size);
}
return decodeFromString;
}
}
try {
String dataDecoded = java.net.URLDecoder.decode(faceInfoLog.getPhoto(), "utf-8");
System.out.println(OSSUtil.getUrl(OSSUtil.uploadImg(dataDecoded)));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}