我正在使用Cloud Storage for Firebase。我很难混淆如何使用字节数组或使用文件
以最快的方式上传图像文件try {
Uri uri = Uri.parse(UriList.get(Imagecount_update));
bmp = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
} catch (IOException e) {
Log.d("PrintIOExeception","***** "+e.toString());
e.printStackTrace();
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 25, baos);
byte[] data = baos.toByteArray();
mStorageReference = FirebaseStorage.getInstance().getReference();
StorageReference riversRef = mStorageReference.child("images/" + String.valueOf(System.currentTimeMillis()));
UploadTask uploadTask;
uploadTask = riversRef.putBytes(data);
(或)
uploadTask = riversRef.putFile(data);
哪种方式可以快速上传图片uploadTask = riversRef.putBytes(data);
或uploadTask = riversRef.putFile(data);
?
答案 0 :(得分:3)
这不是一个更快的问题。他们都做不同的事情。 putFile从URI(托管在互联网上的文件,或客户端本地系统上的文件路径,以"文件://"为前缀)上传文件,这意味着它将文件下载到服务器。 putBytes接受文件生成的物理字节[]中的字节,并由您(或其他客户端)提供给服务器。
See here API显示了差异。
此外,还有putStream,它可以接受像内存流这样的东西,它可以在客户端基本上使文件的处理更快,但就实际上传的速度而言,它完全取决于连接速度。客户端和服务器,没有任何一个功能会比另一个更快地上传/下载。
但是,总而言之,为了回答你的问题,我个人只会使用putFile()作为图像,因为putFile()很可能在后端处理你的byte []逻辑。