android 生成url,使用从服务器端应用程序生成的签名URL将文件(视频文件)从android上传到S3服务器...

使用

Retrofit HTTP客户端库完成此操作,它成功将文件上传到Amazon s3服务器.

码:

public interface UploadService {

String BASE_URL = "https://bucket.s3.amazonaws.com/folder";

/**

* @param url :signed s3 url string after 'BASE_URL'.

* @param file :file to upload,( usage: new TypedFile("mp4", videoFile);.

* @param cb :callback.

*/

@PUT("/{url}")

void uploadFile(@Path(value = "url", encode=false) String url, @Body() TypedFile file, Callback cb);

}

服务类

public final class ServiceGenerator {

private ServiceGenerator() {

}

public static S createService(Class serviceClass, String baseUrl) {

return createService(serviceClass, baseUrl, null, null);

}

public static S createService(Class serviceClass, String baseUrl, final String accessToken, final String tokenType) {

class MyErrorHandler implements ErrorHandler {

@Override public Throwable handleError(RetrofitError cause) {

return cause;

}

}

Gson gson = new GsonBuilder()

.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)

.registerTypeAdapter(Date.class, new DateTypeAdapter())

.disableHtmlEscaping()

.create();

RestAdapter.Builder builder = new RestAdapter.Builder()

.setEndpoint(baseUrl)

.setClient(new OkClient(new OkHttpClient()))

.setErrorHandler(new MyErrorHandler())

.setLogLevel(RestAdapter.LogLevel.FULL)

.setConverter(new GsonConverter(gson));

if (accessToken != null) {

builder.setRequestInterceptor(new RequestInterceptor() {

@Override

public void intercept(RequestFacade request) {

request.addHeader("Accept", "application/json;versions=1");

request.addHeader("Authorization", tokenType +

" " + accessToken);

}

});

}

RestAdapter adapter = builder.build();

return adapter.create(serviceClass);

}

并使用:

UploadService uploadService = ServiceGenerator.createService(UploadService.class,UploadService.BASE_URL);

uploadService.uploadFile(remUrl,typedFile,new CallbackInstance());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值