阿里云上传文件的实例
阿里云上传文件简单示例
点击查看代码
package com.itheima;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.FileInputStream;
import java.io.InputStream;
public class Demo {
public static void main(String[] args) throws Exception {
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "https://oss-cn-hangzhou.aliyucs.com";
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
// EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
String accessKeyId="LTAI4GCH1vX6DKqJWxd6nEuW";
String accessKeySecret="yBshYweHOpqDuhCArrVHwIiBKpyqSL";
// 填写Bucket名称,例如examplebucket。
String bucketName = "web-tlias";
// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
String objectName = "1.jpg";
// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
String filePath= "";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId, accessKeySecret);
try {
InputStream inputStream = new FileInputStream(filePath);
// 创建PutObjectRequest对象。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
// 创建PutObject请求。
PutObjectResult result = ossClient.putObject(putObjectRequest);
} 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();
}
}
}
}
阿里云上传文件工具类
点击查看代码
package com.itheima.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
public class AliOSSUtils {
private String endpoint="";
private String accessKeyId="";
private String accessKeySecret="";
private String bucketName="";
public String upload(MultipartFile img) throws IOException {
//获取上传文件的输入流
InputStream inputStream=img.getInputStream();
//避免文件覆盖
String orignalName=img.getOriginalFilename();
int index =orignalName.lastIndexOf(".");
String endName= UUID.randomUUID().toString()+orignalName.substring(index);
//上传文件到oss
OSS ossClient=new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
ossClient.putObject(bucketName,endName,inputStream);
//文件访问路径
String url=endpoint.split("//")[0]+"//"+bucketName+endpoint.split("//")[1]+"/"+endName;
//关闭ossClient
ossClient.shutdown();
return url;
}
}