| | |
| | | package com.ruoyi.file.utils; |
| | | |
| | | import cn.hutool.extra.qrcode.QrCodeUtil; |
| | | import com.aliyun.oss.ClientException; |
| | | import com.aliyun.oss.OSS; |
| | | import com.aliyun.oss.OSSClientBuilder; |
| | | import com.aliyun.oss.OSSException; |
| | | import com.aliyun.oss.model.OSSObject; |
| | | import com.aliyun.oss.model.PutObjectRequest; |
| | | import com.aliyun.oss.model.PutObjectResult; |
| | | import com.ruoyi.common.core.utils.uuid.IdUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.InputStream; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author jqs34 |
| | |
| | | */ |
| | | public class OBSUploadUtils { |
| | | |
| | | |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | String fileUrl = null; |
| | | File qrCodeFile = new File("/home/image/qrcode.png"); |
| | | // 二维码内容 |
| | | String text = "https://wxapp.hhhrt.cn/mini/coupon"; |
| | | // 生成二维码 |
| | | QrCodeUtil.generate(text, 100, 100, qrCodeFile); |
| | | InputStream codeStream = new FileInputStream(qrCodeFile); |
| | | fileUrl = OBSUploadUtils.uploadInputStream(codeStream,"couponCode"); |
| | | System.out.println(fileUrl); |
| | | } |
| | | |
| | | protected static OSS createOss(){ |
| | | // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 |
| | |
| | | OSS ossClient = createOss(); |
| | | PutObjectResult result = null; |
| | | try { |
| | | |
| | | String fileName = FileUploadUtils.extractFilename(file); |
| | | System.out.println(fileName + "开始上传" + new Date()); |
| | | String prefix = fileName.substring(fileName.lastIndexOf(".")); |
| | | String objectName = filePath + uuid + prefix; |
| | | InputStream inputStream = file.getInputStream(); |
| | |
| | | putObjectRequest.setProcess("true"); |
| | | // 创建PutObject请求。 |
| | | result = ossClient.putObject(putObjectRequest); |
| | | // 如果上传成功,则返回200。 |
| | | System.out.println(fileName + "上传返回"+ new Date() + result.getResponse().getStatusCode()); |
| | | inputStream.close(); |
| | | return result.getResponse().getUri(); |
| | | } catch (OSSException oe) { |
| | | System.out.println("Caught an OSSException, which means your request made it to OSS, " |
| | | + "but was rejected with an error response for some reason."); |
| | | System.out.println("Error Message:" + oe.getErrorMessage()); |
| | | System.out.println("Error Code:" + oe.getErrorCode()); |
| | | System.out.println("Request ID:" + oe.getRequestId()); |
| | | System.out.println("Host ID:" + oe.getHostId()); |
| | | } catch (ClientException ce) { |
| | | System.out.println("Caught an ClientException, which means the client encountered " |
| | | + "a serious internal problem while trying to communicate with OSS, " |
| | | + "such as not being able to access the network."); |
| | | System.out.println("Error Message:" + ce.getMessage()); |
| | | } finally { |
| | | if (ossClient != null) { |
| | | ossClient.shutdown(); |
| | | } |
| | | } |
| | | return result.getResponse().getErrorResponseAsString(); |
| | | } |
| | | |
| | | public static String uploadInputStream (InputStream inputStream,String fileName) throws Exception { |
| | | |
| | | // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 |
| | | String bucketName = "hongruitang"; |
| | | Calendar calendar = Calendar.getInstance(); |
| | | // 获取当前年 |
| | | String year = String.valueOf(calendar.get(Calendar.YEAR)); |
| | | // 获取当前月 |
| | | String month = String.valueOf(calendar.get(Calendar.MONTH) + 1); |
| | | // 获取当前日 |
| | | String day = String.valueOf(calendar.get(Calendar.DATE)); |
| | | String filePath = year+"/"+month+"/"+day+"/"; |
| | | String uuid = IdUtils.fastSimpleUUID(); |
| | | // 创建OSSClient实例。 |
| | | OSS ossClient = createOss(); |
| | | PutObjectResult result = null; |
| | | try { |
| | | |
| | | System.out.println(fileName + "开始上传"+ new Date()); |
| | | String objectName = filePath + fileName + ".jpg"; |
| | | // 创建PutObjectRequest对象。 |
| | | PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); |
| | | // 设置该属性可以返回response。如果不设置,则返回的response为空。 |
| | | putObjectRequest.setProcess("true"); |
| | | // 创建PutObject请求。 |
| | | result = ossClient.putObject(putObjectRequest); |
| | | // 如果上传成功,则返回200。 |
| | | System.out.println(fileName + "上传返回"+ new Date() + result.getResponse().getStatusCode()); |
| | | return result.getResponse().getUri(); |
| | | } catch (OSSException oe) { |
| | | System.out.println("Caught an OSSException, which means your request made it to OSS, " |
| | | + "but was rejected with an error response for some reason."); |
| | | System.out.println("Error Message:" + oe.getErrorMessage()); |
| | | System.out.println("Error Code:" + oe.getErrorCode()); |
| | | System.out.println("Request ID:" + oe.getRequestId()); |
| | | System.out.println("Host ID:" + oe.getHostId()); |
| | | } catch (ClientException ce) { |
| | | System.out.println("Caught an ClientException, which means the client encountered " |
| | | + "a serious internal problem while trying to communicate with OSS, " |
| | | + "such as not being able to access the network."); |
| | | System.out.println("Error Message:" + ce.getMessage()); |
| | | } finally { |
| | | if (ossClient != null) { |
| | | ossClient.shutdown(); |
| | | } |
| | | } |
| | | return result.getResponse().getErrorResponseAsString(); |
| | | } |
| | | |
| | | public static String uploadLocalFile (File file) throws Exception { |
| | | |
| | | // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 |
| | | String bucketName = "hongruitang"; |
| | | Calendar calendar = Calendar.getInstance(); |
| | | // 获取当前年 |
| | | String year = String.valueOf(calendar.get(Calendar.YEAR)); |
| | | // 获取当前月 |
| | | String month = String.valueOf(calendar.get(Calendar.MONTH) + 1); |
| | | // 获取当前日 |
| | | String day = String.valueOf(calendar.get(Calendar.DATE)); |
| | | String filePath = year+"/"+month+"/"+day+"/"; |
| | | String uuid = IdUtils.fastSimpleUUID(); |
| | | // 创建OSSClient实例。 |
| | | OSS ossClient = createOss(); |
| | | PutObjectResult result = null; |
| | | try { |
| | | |
| | | String fileName =file.getName(); |
| | | System.out.println(fileName + "开始上传"); |
| | | String prefix = fileName.substring(fileName.lastIndexOf(".")); |
| | | String objectName = filePath + uuid + prefix; |
| | | // 创建PutObject请求。 |
| | | result = ossClient.putObject(bucketName,objectName,file); |
| | | // 如果上传成功,则返回200。 |
| | | System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode()); |
| | | return result.getResponse().getUri(); |
| | |
| | | return result.getResponse().getErrorResponseAsString(); |
| | | } |
| | | |
| | | public static InputStream getOSSInputStream(String key) throws Exception { |
| | | String bucketName = "hongruitang"; |
| | | // 创建OSSClient实例。 |
| | | OSS ossClient = createOss(); |
| | | OSSObject ossObject = ossClient.getObject(bucketName,key); |
| | | InputStream inputStream = ossObject.getObjectContent(); |
| | | return inputStream; |
| | | } |
| | | |
| | | } |