1环境搭建:
1,下载阿里云AndroidSDK,https://docs.aliyun.com/?spm=5176.7189909.0.0.fkYxYy#/pub/oss/sdk/sdk-download&android;
2,下载AndroidSDK包含4个内容,一是阿里云的安卓例子Android-Example,二是阿里云的使用文档doc,三是阿里云的sdk,四是Federation Token鉴权加签所需文件
把sdk拷到项目的libs目录下即可。
2初始化 《如果出现找不到sdk里面的类异常,则需要更新自己的开发环境》
1, 在配置文件下加入以下权限
<!-- 阿里云所需权限 start-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 阿里云所需权限 end-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 阿里云所需权限 end-->
2,在application中初始化阿里云
//--------------------------阿里云相关--Start-------------------------------
private OSSService ossService;
private String BucketName="collect-app";
private OSSBucket bucket;
private String host="oss-cn-qingdao.aliyuncs.com"; //外网
//private String host="oss-cn-qingdao-internal.aliyuncs.com"; //内网
static final String accessKey = "输入自己的key"; // 测试代码没有考虑AK/SK的安全性
static final String screctKey = "输入自己的key";
//---------------------------阿里云相关---end--------------------------------
public OSSService getOssService(){
return ossService;
}
//阿里云相关--------------------------start-------------------------------------
private void initAliyun() {
ossService = OSSServiceProvider.getService();
ossService.setApplicationContext(getApplicationContext());
ossService.setGlobalDefaultHostId(host);
/*ossService.setAuthenticationType(AuthenticationType.FEDERATION_TOKEN);
ossService.setGlobalDefaultStsTokenGetter(new StsTokenGetter() {
@Override
public OSSFederationToken getFederationToken() {
// TODO Auto-generated method stub
return null;
}
});*/
ossService.setGlobalDefaultACL(AccessControlList.PRIVATE); // 默认为private
ossService.setAuthenticationType(AuthenticationType.ORIGIN_AKSK); // 设置加签类型为原始AK/SK加签
ossService.setGlobalDefaultTokenGenerator(new TokenGenerator() { // 设置全局默认加签器
@Override
public String generateToken(String httpMethod, String md5, String type, String date,
String ossHeaders, String resource) {
String content = httpMethod + "\n" + md5 + "\n" + type + "\n" + date + "\n" + ossHeaders
+ resource;
Log.i("ss","加签器"+ content.toString());
return OSSToolKit.generateToken(accessKey, screctKey, content);
}
});
ossService.setCustomStandardTimeWithEpochSec(System.currentTimeMillis() / 1000); // epoch时间,从1970年1月1日00:00:00 UTC经过的秒数
ClientConfiguration conf = new ClientConfiguration();
conf.setConnectTimeout(15 * 1000); // 设置建连超时时间,默认为30s
conf.setSocketTimeout(15 * 1000); // 设置socket超时时间,默认为30s
conf.setMaxConnections(50); // 设置全局最大并发连接数,默认为50个
ossService.setClientConfiguration(conf);
}
private OSSService ossService;
private String BucketName="collect-app";
private OSSBucket bucket;
private String host="oss-cn-qingdao.aliyuncs.com"; //外网
//private String host="oss-cn-qingdao-internal.aliyuncs.com"; //内网
static final String accessKey = "输入自己的key"; // 测试代码没有考虑AK/SK的安全性
static final String screctKey = "输入自己的key";
//---------------------------阿里云相关---end--------------------------------
public OSSService getOssService(){
return ossService;
}
//阿里云相关--------------------------start-------------------------------------
private void initAliyun() {
ossService = OSSServiceProvider.getService();
ossService.setApplicationContext(getApplicationContext());
ossService.setGlobalDefaultHostId(host);
/*ossService.setAuthenticationType(AuthenticationType.FEDERATION_TOKEN);
ossService.setGlobalDefaultStsTokenGetter(new StsTokenGetter() {
@Override
public OSSFederationToken getFederationToken() {
// TODO Auto-generated method stub
return null;
}
});*/
ossService.setGlobalDefaultACL(AccessControlList.PRIVATE); // 默认为private
ossService.setAuthenticationType(AuthenticationType.ORIGIN_AKSK); // 设置加签类型为原始AK/SK加签
ossService.setGlobalDefaultTokenGenerator(new TokenGenerator() { // 设置全局默认加签器
@Override
public String generateToken(String httpMethod, String md5, String type, String date,
String ossHeaders, String resource) {
String content = httpMethod + "\n" + md5 + "\n" + type + "\n" + date + "\n" + ossHeaders
+ resource;
Log.i("ss","加签器"+ content.toString());
return OSSToolKit.generateToken(accessKey, screctKey, content);
}
});
ossService.setCustomStandardTimeWithEpochSec(System.currentTimeMillis() / 1000); // epoch时间,从1970年1月1日00:00:00 UTC经过的秒数
ClientConfiguration conf = new ClientConfiguration();
conf.setConnectTimeout(15 * 1000); // 设置建连超时时间,默认为30s
conf.setSocketTimeout(15 * 1000); // 设置socket超时时间,默认为30s
conf.setMaxConnections(50); // 设置全局最大并发连接数,默认为50个
ossService.setClientConfiguration(conf);
}
3,在需要上传图片的activity上传文件
private OSSService ossService;
private String BucketName="阿里云控制台里面的bucket名称";
private OSSBucket bucket;
private int cancedialog=0;
private String BucketName="阿里云控制台里面的bucket名称";
private OSSBucket bucket;
private int cancedialog=0;
public void fileUpload(String filename,String filepath) {
OSSFile ossFile = ossService.getOssFile(bucket, filename);
try {
ossFile.setUploadFilePath(filepath, "image/png");
} catch (Exception e) {
e.printStackTrace();
} // 指明需要上传的文件的路径,和文件内容类型,如果文件不存在将抛出异常
ossFile.enableUploadCheckMd5sum(); // 开启上传md5校验
ossFile.uploadInBackground(new SaveCallback() {
@Override
public void onSuccess(String objectKey) {
Log.i("ss", "上传成功");
@Override
public void onProgress(String objectKey, int byteCount, int totalSize) {
Log.i("ss", "正在上传");
}
@Override
public void onFailure(String objectKey, OSSException ossException) {
Log.i("ss", "上传失败"+ossException.toString()+objectKey.toString());
}
});
}