使用AliOSS上传图片

1、在yml文件中,配置相关信息

aliyun:
  oss:
    endpoint: #Endpoint以华东1(杭州)为例,其它Region请按实际情况填写
    accessKeyId: #自己阿里云的信息
    accessKeySecret: #自己阿里云的信息
    bucketName: #填写Bucket名称,例如examplebucket

2、创建阿里云对象实体类

@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliossProperties {
    private String endpoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;
}

3、编写一个配置类,注入阿里云对象实体类,将对象交给IOC容器管理

@Configuration
public class OssConfiguration {

     @Autowired
     private AliossProperties aliossProperties;

     @Bean
     @ConditionalOnMissingBean
     public AliOssUtil aliOssUtil(){
         return new AliOssUtil(aliossProperties.getEndpoint(),
                 aliossProperties.getAccessKeyId(),
                 aliossProperties.getAccessKeySecret(),
                 aliossProperties.getBucketName());
     }

}

4、使用阿里云OSS的工具类上传图片

这个工具类是根据阿里云OSS官方工具类改写,可以直接导入使用

@Data
@AllArgsConstructor
public class AliOssUtil {

     // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
     private String endpoint;
     // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
     //EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
     private String accessKeyId;
     private String accessKeySecret;
     // 填写Bucket名称,例如examplebucket。
     private String bucketName;


    public String uploadFile(String objectName, InputStream inputStream) throws Exception {

         // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
         //String objectName = "001.png";

         // 创建OSSClient实例。
         OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

         String url="";
         try {
             // 填写字符串。
             String content = "Hello OSS,你好世界";

             // 创建PutObjectRequest对象。
             PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);

             // 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
             // ObjectMetadata metadata = new ObjectMetadata();
             // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
             // metadata.setObjectAcl(CannedAccessControlList.Private);
             // putObjectRequest.setMetadata(metadata);

             // 上传字符串。
             PutObjectResult result = ossClient.putObject(putObjectRequest);
             //url组成: https://bucket名称,区域节点/objectName
             url="https://"+bucketName+"."+endpoint.substring(endpoint.lastIndexOf("/")+1)+"/"+objectName;
         } 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 url;
     }

5、在service层中导入bean即可使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
UniApp 是一个跨平台的开发框架,可以用于开发多个平台的应用程序。如果你想在 UniApp 中导出 Excel 文件并使用 Java 的 EasyExcel 库,可以考虑以下步骤: 1. 在 UniApp 中安装第三方插件 uni-mp-alioss,该插件提供了上传文件的功能。 2. 在 UniApp 中创建一个页面,包含一个表格,以及一个按钮,当用户点击按钮时,将表格数据导出到 Excel 文件。 3. 在按钮的点击事件中,使用 uni-mp-alioss 插件上传 Excel 文件到阿里云 OSS 对象存储服务。 4. 在 Java 中,使用 EasyExcel 库读取 OSS 中的文件,进行数据处理。 以下是 Java 的代码示例: ```java // 导入 EasyExcel 库 import com.alibaba.excel.EasyExcel; // 从 OSS 中读取 Excel 文件 InputStream inputStream = ossClient.getObject(bucketName, objectName).getObjectContent(); // 定义 Excel 数据处理类 class ExcelDataListener extends AnalysisEventListener<T> { private List<T> dataList = new ArrayList<T>(); public void invoke(T object, AnalysisContext context) { dataList.add(object); } public void doAfterAllAnalysed(AnalysisContext context) { // 处理 dataList 中的数据 } } // 使用 EasyExcel 读取 Excel 文件 EasyExcel.read(inputStream, clazz, new ExcelDataListener()).sheet().doRead(); ``` 其中,clazz 是 Excel 文件中数据对应的 Java 类型,T 是该类型的泛型。在 ExcelDataListener 的 invoke 方法中,将 Excel 文件中的数据添加到 dataList 中,最后在 doAfterAllAnalysed 方法中处理 dataList 中的数据。你可以根据自己的需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚Pi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值