此代码只是学习用,不适合项目直接用,要根据自己的项目需求改动。此方法是直接转换肯定要放在子线程中运行的!
本人做了两个工具类,腾讯和阿里的对象存储工具,两个调用方式都差不多,试试类名不同,大家如果用的话肯定还得自己稍微优化下包括出错处理,还有我配置的参数是写死不安全的,这些信息肯定是要你们到服务器申请临时秘钥的,这个我就不教了,就是调用你们自己的服务器获取一下秘钥修改一下就行了,我的代码估计大家都能看得懂!
上代码
基本上就是传个文件路径
这一行就可以直接把传进去的路径转成上传过后的网络图片路径,还可以传数组,
返回的也是一个上传过后的数组,大家自己去测试把,我的项目就不引用第三方库了
都直接原生写免得下载代码了一堆的报错
String nativeFilepath="本地图片地址"
调用工具直接转成上传后的云上地址
String uploadOssUrl = TencentOssUtils.uploadOssFile(nativeFilepach);
public class AliOssUtils {
//上传单个文件
public static String uploadOssFile(String locationPath) throws Exception {
return uploadOssFile(locationPath, null);
}
//上传多个文件
public static List<String> uploadOssFiles(List<String> locationPaths) throws Exception {
return uploadOssFiles(locationPaths, null);
}
//上传单个文件
public static String uploadOssFile(String locationPath, String uploadfolder) throws Exception {
ArrayList<String> locationPaths = new ArrayList<>();
locationPaths.add(locationPath);
List<String> updateResults = uploadOssFiles(locationPaths, uploadfolder);
String uploadUrl = updateResults.get(0);
return uploadUrl;
}
//上传多个文件
public static List<String> uploadOssFiles(List<String> locationPaths, String uploadfolder) throws Exception {
OSS oss = new OSSClient(MyApplication.getContext(), BASE_END_POINT, new OSSStsTokenCredentialProvider(new OSSFederationToken(AccessKeyId,AccessKeySecret,"","")));
ArrayList<String> updateResults = new ArrayList<>();
for (String locationPath : locationPaths) {
String uploadUrl = PutObjectFromLocalFile(oss,locationPath, uploadfolder);
if (!"".equals(uploadUrl)) {
updateResults.add(uploadUrl);
}
}
if (updateResults.size() == locationPaths.size()) {
return updateResults;
} else {
updateResults.clear();
}
return updateResults;
}
private static String PutObjectFromLocalFile(OSS oss,String locationPath, String uploadfolder) {
try {
uploadfolder=uploadfolder==null?"":uploadfolder+"/";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String folderName = format.format(new Date()).toString()+"/";
String objectKey=uploadfolder+folderName+UUID.randomUUID()+locationPath.substring(locationPath.lastIndexOf("."));
// 构造上传请求
PutObjectRequest put = new PutObjectRequest(BASE_BUKET_NAME, objectKey, locationPath);
PutObjectResult putObjectResult = oss.putObject(put);
Log.d("",putObjectResult.toString());
String uploadpath =new StringBuilder("https://").append(BASE_BUKET_NAME).append(".").append(BASE_END_POINT).append("/").append(objectKey).toString();
return uploadpath;
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
//配置参数
public static final String AccessKeyId="LTAIu0vZyzDHqhwq";
public static final String AccessKeySecret="nF3XSmHt25H19Q6BMCmlIHmJI6KB6W";
public static final String RequestId="";
public static final String Expiration="";
public static final String SecurityToken="";
public static final String BASE_END_POINT = "oss-cn-qingdao.aliyuncs.com";
public static final String BASE_BUKET_NAME = "scoto263";;
}
下载地址:
https://download.csdn.net/download/lizefeng19/10775625