Java 实现阿里云OSS文件上传
首先maven包
<!--OSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.2.1</version>
</dependency>
</dependencies>
之后配置文件
oss:
address: oss-cn-beijing.aliyuncs.com/
accessKey:
accessSecret:
bucketName: weinuoqinggan
filePath: picture/
我用的springboot的yml文件 然后直接采取注解读取 注入到spring容器中
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
*
* @author 阿里文件上传OSS
*/
@Component
@ConfigurationProperties(prefix = "oss")
@Data
public class AliOssConfig {
private String address;
private String accessKey;
private String accessSecret;
private String bucketName;
private String filePath;
}
最后就是我们的文件上传工具类了
import com.aliyun.oss.OSSClient;
import com.feeling.core.config.AliOssConfig;
import com.feeling.core.util.LogUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.util.Date;
import java.util.UUID;
/**
* 阿里云OSS文件上传
*
*/
@Component
public class AliOssUploadServer {
protected static final Logger logger = LogUtils.getPlatformLogger();
@Autowired
private AliOssConfig aliOssConfig;
private static final String HOME_FILE="picture/";//相对路径
public String fileOssUpload(MultipartFile file){
String reqUrl="";
String endPoint=aliOssConfig.getAddress();
String accessKey=aliOssConfig.getAccessKey();
String accessSecret=aliOssConfig.getAccessSecret();
OSSClient client = new OSSClient(endPoint, accessKey, accessSecret);
String bucket=aliOssConfig.getBucketName();
//获取文件后缀名
String fileType = StringUtils.substringAfterLast(file.getOriginalFilename(), ".");
//文件相对路径+文件名.文件类型
String fileName=HOME_FILE.concat(UUID.randomUUID().toString()).concat(".").concat(fileType);
try {
//时间戳
Date expire = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
//文件上传
client.putObject(bucket, fileName, new ByteArrayInputStream(file.getBytes()));
//获取文件路径
reqUrl=client.generatePresignedUrl(bucket, fileName, expire).toString();
//截取文件多余参数
reqUrl = reqUrl.substring(0,reqUrl.indexOf("?"));
} catch (Exception e) {
logger.error("aliOssUpload Fail:"+e.getMessage());
return reqUrl;
}finally{
client.shutdown();
}
return reqUrl;
}
}
测试
返回值
最后到oss的桶里去看看存在不存在
大功告成!!!