OSS简单文件上传工具类

2022-12-21 09:23:46 浏览数 (1)

导包

代码语言:javascript复制
   <dependency>
       <groupId>com.aliyun.oss</groupId>
       <artifactId>aliyun-sdk-oss</artifactId>
       <version>3.10.2</version>
   </dependency>

工具类代码:

  • 输入要上传的文件地址,返回上传后的地址
  • 上传任意文件
代码语言:javascript复制
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

/**
 * --常家壮
 * --2020年9月24日
 *
 *  阿里云OSS 文件简单上传,不检测文件后缀名,可上传任意文件类型
 * 输入要上传的文件地址,返回上传后的地址
 * 使用文件上传模式
 * 版本:0.3
 * ----------------------Maven坐标-------------------------
   <dependency>
       <groupId>com.aliyun.oss</groupId>
       <artifactId>aliyun-sdk-oss</artifactId>
       <version>3.10.2</version>
   </dependency>
 */
public class OssUtils {

    /**
     * 上传返回路径
     */
    public static String getFileUrl(String url){
        //文件流
        File file = new File(url);
     // Endpoint以杭州为例,其它Region请按实际情况填写,看看自己的Endpoint(地域节点)
        String endpoint = "http://oss-cn-beijing.aliyuncs.com";
    // 阿里云主账号AccessKey拥有所有API的访问权限
        String accessKeyId = "你的accessKeyId ";
        String accessKeySecret = "你的accessKeySecret ";

    // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        /*
            创建PutObjectRequest对象。
            <yourObjectName>上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
            filePath:生成路径
        */
        String filePath = getFilePath(file.getName());
        PutObjectRequest putObjectRequest = new PutObjectRequest("你的Bucket 名称", filePath,file);


        // 上传文件。
        ossClient.putObject(putObjectRequest);

        // 关闭OSSClient。
        ossClient.shutdown();

        //返回地址
        return "https://你的Bucket域名/" filePath;
    }

    /**
     * 删除文件
     * @param url
     */
    public static  void delete(String url){
        new File(url).delete();
    }

    /**
     * 定义一个类 用于生成上传文件名称
     */
    private static String getFilePath(String sourceFileName) {
        DateTime dateTime = new DateTime();
        return "file/"   dateTime.toString("yyyy")
                  "/"   dateTime.toString("MM")   "/"
                  dateTime.toString("dd")   "/"   System.currentTimeMillis()  
                RandomUtils.nextInt(100, 9999)   "."  
                StringUtils.substringAfterLast(sourceFileName, ".");
    }
}

0 人点赞