2017-12-15 6 views
-1

Cloud Storage for Firebase를 사용하고 있습니다. 나는 어떻게 하나의 이미지 uploadTask = riversRef.putBytes(data); 또는 uploadTask = riversRef.putFile(data);을 업로드하는 빠른 방법입니다 빠른 업로드를하는 Firebase putBytes 또는 putfile?

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); 

파일

을 바이트 배열을 사용하거나 사용하는 가장 빠른 방법으로 imagefile 업로드 약간의 혼란이?

답변

2

어느 것이 더 빠르 든 상관 없습니다. 둘 다 서로 다른 일을합니다. putFile은 URI 파일 (인터넷에 호스팅 된 파일 또는 클라이언트 로컬 시스템의 파일 경로로 "file : //"접두사가 있음)을 업로드하여 파일을 서버에 다운로드합니다. putBytes는 파일에 의해 생성되고 사용자 (또는 다른 클라이언트)가 서버에 제공 한 실제 바이트 []에서 바이트를 허용합니다.

See here API가 차이점을 보여줍니다.

또한 메모리 스트림과 같은 것을 받아 들일 수있는 putStream이 있습니다. 클라이언트 스트림에서 본질적으로 파일 처리를 더 빠르게 할 수는 있지만 실제로 업로드 속도는 연결 속도에 완전히 달려 있습니다 클라이언트와 서버의 기능이 다르며 다른 기능보다 빠르게 업로드/다운로드하는 기능은 없습니다.

결론적으로, 귀하의 질문에 대답하기 위해, putFile()은 백 엔드에서 당신을 위해 byte [] 논리를 가장 잘 처리하기 때문에 개인적으로 이미지에 putFile()을 사용합니다.

+0

@Thanks 귀하의 제안에 동생이 ... 나는 의사를 볼 것입니다 ... –