• java基于OSS文件上传功能


    1.登录阿里云,点击开通对象储存功能

     2.点击创建bucket

    3.创建页面如下:根据自己要求勾选

    4.点击此处进入:

     5.可以在网页上实现文件上传下载

     6.下面实现基于java的oss上传下载

      6.1  点击下面按钮,设置ak

    6.2 使用子用户

    6.3点击创建用户,设置以下三处

    创建后系统会给你提供如下:记得复制粘贴下来,保存下来,以后要用到;你退出后,系统不会帮你记录下来这个

     6.4点击添加权限

    我选择了这个,按需要选择:

     

     6.5 JAVA 的oss文件上传工具类

      /**
         * oss完成文件上传
         * @param endpoint  地域节点
         * @param accessKeyId  ak id
         * @param accessKeySecret ak密码
         * @param inputStream  要上传的文件的输入流
         * @param bucketName  Bucket 名字
         * @param bucketDomain Bucket 域名
         * @param originalName  要上传的文件的原始文件名
         * @return
         */
        public static ResultEntity<String> uploadFileToOss(
                String endpoint,
                String accessKeyId,
                String accessKeySecret,
                InputStream inputStream,
                String bucketName,
                String bucketDomain,
                String originalName) {
    
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
    
            // 生成上传文件的目录
            String folderName = new SimpleDateFormat("yyyyMMdd").format(new Date());
    
            // 生成上传文件在OSS服务器上保存时的文件名
            // 原始文件名:beautfulgirl.jpg
            // 生成文件名:wer234234efwer235346457dfswet346235.jpg
            // 使用UUID生成文件主体名称
            String fileMainName = UUID.randomUUID().toString().replace("-", "");
    
            // 从原始文件名中获取文件扩展名
            String extensionName = originalName.substring(originalName.lastIndexOf("."));
    
            // 使用目录、文件主体名称、文件扩展名称拼接得到对象名称
            String objectName = folderName + "/" + fileMainName + extensionName;
    
            try {
                // 调用OSS客户端对象的方法上传文件并获取响应结果数据
                PutObjectResult putObjectResult = ossClient.putObject(bucketName, objectName, inputStream);
    
                // 从响应结果中获取具体响应消息
                ResponseMessage responseMessage = putObjectResult.getResponse();
    
                // 根据响应状态码判断请求是否成功
                if(responseMessage == null) {
    
                    // 拼接访问刚刚上传的文件的路径
                    String ossFileAccessPath = bucketDomain + "/" + objectName;
    
                    // 当前方法返回成功
                    return ResultEntity.successWithData(ossFileAccessPath);
                } else {
                    // 获取响应状态码
                    int statusCode = responseMessage.getStatusCode();
    
                    // 如果请求没有成功,获取错误消息
                    String errorMessage = responseMessage.getErrorResponseAsString();
    
                    // 当前方法返回失败
                    return ResultEntity.failed("当前响应状态码="+statusCode+" 错误消息="+errorMessage);
                }
            } catch (Exception e) {
                e.printStackTrace();
    
                // 当前方法返回失败
                return ResultEntity.failed(e.getMessage());
            } finally {
    
                if(ossClient != null) {
    
                    // 关闭O SSClient。
                    ossClient.shutdown();
                }
            }

    6.6. 测试类如下:

     6.7 效果如下:

  • 相关阅读:
    java 编译
    MapReduce
    搜索引擎中index、attribute和summary概念
    正排索引和倒排索引简单介绍
    SVN 使用
    PlantUML + Chrome 联合使用
    vim 多标签和多窗口
    关于数据库不适合docker的原因(摘抄)
    跨域
    is_valid校验机制
  • 原文地址:https://www.cnblogs.com/hyy9527/p/13558976.html
Copyright © 2020-2023  润新知