使用预签名URL直传天翼云对象存储(融合版)教程 |
产品推荐: 1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>; 2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>> 3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>> 4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>> 点击这里注册天翼云特邀VIP帐号,立即体验天翼云对象存储>>> 使用预签名URL直传天翼云对象存储(融合版)教程 实践背景对象存储SDK提供预签名接口可以生成预签名URL,通过预签名URL,移动端APP可以直接上传或者下载文件。不需要使用SDK和密钥,使用Http接口就可以进行文件的上传和下载。 应用流程使用预签名URL直传对象存储(融合版)应用流程如下: 实践步骤生成预签名URL业务服务器配置长期密钥,调用预签名接口生成预签名URL,具体可参照如下java示例。
String bucketName = "<your-bucket-name>"; String objectKey = "<your-object-key>"; LocalDateTime expirationDateTime = LocalDateTime.now().plusSeconds(5 * 60); //url的有效时间5分钟 Date expiration = Date.from(expirationDateTime.atZone(ZoneId.systemDefault()).toInstant()); try { GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey) .withMethod(HttpMethod.PUT) .withExpiration(expiration); URL url = s3.generatePresignedUrl(generatePresignedUrlRequest); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); }
String bucketName = "<your-bucket-name>"; String objectKey = "<your-object-key>"; try { GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey) .withMethod(HttpMethod.GET) .withExpiration(expiration); URL url = s3.generatePresignedUrl(generatePresignedUrlRequest); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); } 使用预签名URL直传移动端通过业务服务器获取到预签名URL,使用Http接口和预签名URL上传或者下载文件。具体可参照如下示例。
Log.i(TAG, "upload"); try { OkHttpClient httpClient = new OkHttpClient.Builder() .followRedirects(false) .retryOnConnectionFailure(false) .cache(null) .build(); MediaType mediaType = MediaType.parse("text/plain"); RequestBody body = RequestBody.create("file content", mediaType); Request httpRequest = new Request.Builder() .url(url) .put(body) .build(); Call c = httpClient.newCall(httpRequest); Response res = c.execute(); Log.i(TAG, "Status:" + res.code()); if (res.header("ETag") != null) { Log.i(TAG, "ETag:" + res.header("ETag")); } res.close(); } catch (IOException e) { e.printStackTrace(); } }
private void download(String url) { Log.i(TAG, "download"); try { OkHttpClient httpClient = new OkHttpClient.Builder() .followRedirects(false) .retryOnConnectionFailure(false) .cache(null) .build(); Request httpRequest = new Request.Builder() .url(url) .get() .build(); Call c = httpClient.newCall(httpRequest); Response res = c.execute(); Log.i(TAG, "Status:" + res.code()); if (res.body() != null) { Log.i(TAG, "Content:" + res.body().string()); } res.close(); } catch (IOException e) { e.printStackTrace(); } } |