JAVA生成二维码并上传至阿里云
pom依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.0.0</version>
</dependency>
JSONObject qrInfo = new JSONObject(); //二维码内容
qrInfo.put("schoolId", schoolId);
qrInfo.put("ID",123);
qrInfo.put("time", ThreadLocalUtils.dateFormat().format(new Date()));
int width = 300;
int height = 300;
String format = "png";
String contents = qrInfo.toJSONString();
BitMatrix bm = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, width, height);
File file = new File("/tmp/"+ UUID.randomUUID().toString()); //保存路径
Path path = file.toPath();
MatrixToImageWriter.writeToPath(bm, format, path); //输出图像
//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
InputStream inputStream = null;
byte[] buffer = null;
//读取图片字节数组
try {
inputStream = new FileInputStream(file);
int count = 0;
while (count == 0) {
count = inputStream.available();
}
buffer = new byte[count];
inputStream.read(buffer);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
// 关闭inputStream流
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 对字节数组Base64编码
String encode = Base64.getEncoder().encodeToString(buffer);
return faceComponent.upload2(encode);
//人脸上传
public String upload2(String baseString) throws Exception{
if(baseString.isEmpty()){
throw new Exception("对象不可为空");
}
String image = null;
//上传照片
byte[] bytes = Base64.getDecoder().decode(baseString);
image = AliOSSUtil.upload(new ByteArrayInputStream(bytes));
if (image!=null){
image= "https://exuecloud.oss-cn-hangzhou.aliyuncs.com/"+ image +"?x-oss-process=style/thumb_1200_auto";
}else {
image = "";
}
return image;
}
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.InputStream;
import java.util.Date;
public class AliOSSUtil {
private final static org.slf4j.Logger logger = LoggerFactory.getLogger(AliOSSUtil.class);
private static String END_POINT = "oss-cn-hangzhou.aliyuncs.com";
private static String ACCESS_KEY_ID = ""; //阿里云账号
private static String ACCESS_KEY_SECRET = "";
private static String BUCKET_NAME = "";
//文件存储目录
private static String FILE_DIR = "mc-upload/";
/**
* 上传文件外部调用方法
* @param file
* @return 返回文件名,包含文件夹
* @throws Exception
*/
public static String upload(MultipartFile file) throws Exception{
//获取文件原始名称
String originalName = file.getOriginalFilename();
//获取文件扩展名(如:.jpg)
String extendName = originalName.substring(originalName.lastIndexOf(".")).toLowerCase();
//重命名文件保存名称
String fileName = DateUtil.formatDate(new Date(),"yyyyMMddHHmmss") + UUIDUtil.getRandomNumber(4) + extendName;
//获取文件数据流
InputStream inputStream = file.getInputStream();
//上传文件
return upload(inputStream, fileName);
}
/**
* 上传文件流
* @param inputStream 输入数据流
* @return 返回文件名,包含文件夹
* @throws Exception
*/
public static String upload(InputStream inputStream) throws Exception{
//重命名文件保存名称
String fileName = DateUtil.formatDate(new Date(),"yyyyMMddHHmmss") + UUIDUtil.getRandomNumber(4) + ".jpg";
return upload(inputStream, fileName);
}
/**
* 上传文件流
* @param inputStream 输入数据流
* @param fileName 文件名
* @return 返回文件名,包含文件夹
* @throws Exception
*/
public static String upload(InputStream inputStream, String fileName) throws Exception{
//创建上传Object的Metadata
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentLength(inputStream.available());
objectMetadata.setCacheControl("no-cache");
objectMetadata.setHeader("Pragma", "no-cache");
objectMetadata.setContentDisposition("inline;filename=" + fileName);
// 创建OSS客户端
OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
//上传文件
PutObjectResult putResult = ossClient.putObject(BUCKET_NAME, FILE_DIR + fileName, inputStream, objectMetadata);
//关闭数据流
if (inputStream != null) {
inputStream.close();
}
// 关闭client
ossClient.shutdown();
if(null != putResult){
return FILE_DIR + fileName;
}else{
throw new Exception("文件上传失败");
}
}
/**
* 下载文件
* @param objectName
* @throws Exception
*/
public static void download(String objectName, String fileName) throws Exception {
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
// OSSObject ossObject = ossClient.getObject(BUCKET_NAME, objectName);
// BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
// while (true) {
// String line = reader.readLine();
// if (line == null) break;
// }
// System.out.println("reader.lines()==="+reader.lines());
// // 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
// reader.close();
ossClient.getObject(new GetObjectRequest(BUCKET_NAME, objectName), new File(fileName));
// 关闭OSSClient
ossClient.shutdown();
}
/**
* 删除文件
* @param objectName
*/
public static void delete(String objectName){
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
// 删除文件。
ossClient.deleteObject(BUCKET_NAME, objectName);
// 关闭OSSClient。
ossClient.shutdown();
logger.info("文件删除成功:[{}]", objectName);
}
public static void main(String[] args) {
// delete("test/DSCF2919.JPG");
try {
download("upload/11113333.png", "C:\\Users\\liu22\\Desktop\\zhifu-web-20190404-测试\\download11123333.png");
} catch (Exception e) {
e.printStackTrace();
}
}
}
https://exuecloud.oss-cn-hangzhou.aliyuncs.com/mc-upload/202205170940041480.jpg?x-oss-process=style/thumb_1200_auto