温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android R如何将图片到上传OSS

发布时间:2021-09-10 16:55:20 来源:亿速云 阅读:123 作者:柒染 栏目:云计算

这篇文章将为大家详细讲解有关Android R如何将图片到上传OSS,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

首先先初始化oss对象

        // ACCESS_ID,ACCESS_KEY是在[阿里云](https://l.gushuji.site/aliyun)申请的        OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(ACCESS_ID, ACCESS_KEY);        ClientConfiguration conf = new ClientConfiguration();        conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒        conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒        conf.setMaxConcurrentRequest(8); // 最大并发请求数,默认5个        conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次         // oss为全局变量,OSS_ENDPOINT是一个OSS区域地址        oss = new OSSClient(getApplicationContext(), OSS_ENDPOINT, credentialProvider, conf);

oss上传图片分为同步和异步 

同步的方法

// 构造上传请求PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectKey>", "<uploadFilePath>");// 文件元信息的设置是可选的// ObjectMetadata metadata = new ObjectMetadata();// metadata.setContentType("application/octet-stream"); // 设置content-type// metadata.setContentMD5(BinaryUtil.calculateBase64Md5(uploadFilePath)); // 校验MD5// put.setMetadata(metadata);try {    PutObjectResult putResult = oss.putObject(put);    Log.d("PutObject", "UploadSuccess");    Log.d("ETag", putResult.getETag());    Log.d("RequestId", putResult.getRequestId());} catch (ClientException e) {    // 本地异常如网络异常等    e.printStackTrace();} catch (ServiceException e) {    // 服务异常    Log.e("RequestId", e.getRequestId());    Log.e("ErrorCode", e.getErrorCode());    Log.e("HostId", e.getHostId());    Log.e("RawMessage", e.getRawMessage());}

此处这个bucketName是在阿里云平台上配置的 用来储存文件 可以设置私有公有等属性 

objectKey为文件的名字 用来从平台上查询图片

FilePath为所选文件的uri路径

异步上传的方法

// 构造上传请求PutObjectRequest put = new PutObjectRequest("<bucketName>", "<objectKey>", "<uploadFilePath>");// 异步上传时可以设置进度回调put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {    @Override    public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {        Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);    }});OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {    @Override    public void onSuccess(PutObjectRequest request, PutObjectResult result) {        Log.d("PutObject", "UploadSuccess");        Log.d("ETag", result.getETag());        Log.d("RequestId", result.getRequestId());    }    @Override    public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {        // 请求异常        if (clientExcepion != null) {            // 本地异常如网络异常等            clientExcepion.printStackTrace();        }        if (serviceException != null) {            // 服务异常            Log.e("ErrorCode", serviceException.getErrorCode());            Log.e("RequestId", serviceException.getRequestId());            Log.e("HostId", serviceException.getHostId());            Log.e("RawMessage", serviceException.getRawMessage());        }    }});// task.cancel(); // 可以取消任务// task.waitUntilFinished(); // 可以等待任务完成

一般上传成功时候 客户端需要把文件的objectkey传给后台 后台通过拼接然后把图片的url返回给我们

关于Android R如何将图片到上传OSS就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI