我正在尝试将文件上传到AWS s3。我已经有一个有效的网址,文件将被上传(由服务器提供),所以我真的不需要AWS凭证。我只需要在该URL上发送一个要上传的文件的PUT请求。
以前我使用的是Volley API,我将File转换为字节数组并将其用作请求体。
FileInputStream fis = new FileInputStream(fileToUpload);
int transferredBytes = 0;
int totalSize = (int) fileToUpload.length();
bis = new BufferedInputStream(fis);
int bufferLength;
byte[] buffer = new byte[1024];
while ((bufferLength = bis.read(buffer)) > 0) {
bos.write(buffer, 0, bufferLength);
transferredBytes += bufferLength;
progressListener.onProgress(transferredBytes, totalSize);
}
代码正在运行,但有其缺陷。从代码中可以看出,有一个进度监听器,它基本上是将字节写入OutputStream的进程。我认为这并不意味着它已经上传了,因为当进度为100%时,文件上传成功/错误回调之间会出现暂时的空闲状态。
现在,我正在转向Retrofit 2,(与项目中的所有网络功能一起)。我对基本的REST操作没有任何问题,仅针对上传部分。我找不到任何关于如何实施它的指南。
我尝试过搜索,但大部分结果都需要使用AWS SDK或使用Multipart,这在我的要求中不适用。
基本上我有这些问题: