Fork me on GitHub

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 效果如下:

 

posted @ 2020-08-25 12:29  亲爸爸  阅读(5637)  评论(1编辑  收藏  举报