android 实现阿里oss文件上传
时间: 2023-11-27 12:04:35 浏览: 95
你可以使用阿里云官方提供的 OSS(对象存储服务)SDK 来实现 Android 上的文件上传功能。以下是一个简单的示例代码,需要先引入阿里云 OSS SDK 的依赖:
```java
implementation 'com.aliyun.dpa:oss-android-sdk:3.1.8'
```
然后,在你的代码中使用以下方法来实现文件上传:
```java
import com.aliyun.dpa.oss.app.AppServiceFactory;
import com.aliyun.dpa.oss.app.OSSClientFactory;
import com.aliyun.dpa.oss.app.RunningConfig;
import com.aliyun.dpa.oss.app.ServiceFactory;
import com.aliyun.dpa.oss.app.UploadConfiguration;
import com.aliyun.dpa.oss.app.UploadConfigurationFactory;
import com.aliyun.dpa.oss.app.UploadManager;
import com.aliyun.dpa.oss.app.util.FileUtil;
import com.aliyun.dpa.oss.app.util.StringUtil;
import com.aliyun.dpa.oss.app.util.UIUtil;
import com.aliyun.dpa.oss.callback.ResultCallback;
import com.aliyun.dpa.oss.model.OSSUploadConfiguration;
import com.aliyun.dpa.oss.task.PutObjectTask;
import com.aliyun.dpa.oss.task.TaskCancelledException;
public class AliOSSUploader {
private static final String ENDPOINT = "your_oss_endpoint"; // 你的 OSS Endpoint
private static final String ACCESS_KEY_ID = "your_access_key_id"; // 你的 Access Key ID
private static final String ACCESS_KEY_SECRET = "your_access_key_secret"; // 你的 Access Key Secret
private static final String BUCKET_NAME = "your_bucket_name"; // 你的 Bucket 名称
public void uploadFile(String filePath) {
// 创建 OSS 客户端
RunningConfig runningConfig = new RunningConfig(ACCESS_KEY_ID, ACCESS_KEY_SECRET, ENDPOINT);
AppServiceFactory.init(runningConfig);
ServiceFactory serviceFactory = OSSClientFactory.createServiceFactory();
UploadConfiguration configuration = UploadConfigurationFactory.getUploadConfiguration();
UploadManager uploadManager = serviceFactory.createUploadManager(configuration);
// 构造上传任务
PutObjectTask putObjectTask = new PutObjectTask(BUCKET_NAME, StringUtil.generateRandomKey(), filePath);
// 设置上传结果回调
putObjectTask.setResultCallback(new ResultCallback() {
@Override
public void onSuccess(Object object) {
// 文件上传成功
UIUtil.showToast("文件上传成功");
}
@Override
public void onFailure(Exception e) {
// 文件上传失败
UIUtil.showToast("文件上传失败:" + e.getMessage());
}
@Override
public void onProgress(Object object, long currentSize, long totalSize) {
// 文件上传进度
int progress = (int) (currentSize * 100 / totalSize);
UIUtil.showToast("文件上传进度:" + progress + "%");
}
@Override
public void onCancel(Object object) {
// 文件上传取消
UIUtil.showToast("文件上传取消");
}
});
// 开始上传任务
try {
uploadManager.upload(putObjectTask);
} catch (TaskCancelledException e) {
// 上传任务取消
UIUtil.showToast("文件上传取消");
}
}
}
```
以上代码中的 `your_oss_endpoint`、`your_access_key_id`、`your_access_key_secret` 和 `your_bucket_name` 分别是你的 OSS Endpoint、Access Key ID、Access Key Secret 和 Bucket 名称。你需要将它们替换为你自己的实际值。
调用 `uploadFile` 方法并传入要上传的文件路径,即可实现文件上传到阿里云 OSS。记得在 AndroidManifest.xml 中添加网络权限:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
希望对你有帮助!如有其他问题,请随时提问。
阅读全文