2016-09-08 6 views
2

파일을 Firebase Storage에 업로드하려고합니다. 문제는 Muñoz이 포함 된 name 필드에 StorageMetadata을 추가하면 매번 실패합니다. 내가 생각하는 이유는 잘못된 문자가 포함되어 있기 때문입니다. ñ 인 메타 데이터입니다. 이 단어를 유효한 형식으로 어떻게 전달할 수 있는지 알고 싶습니다. 당신잘못된 문자로 메타 데이터 추가하기

감사이 코드 조각은 다음과 같습니다

StorageMetadata metadata = new StorageMetadata.Builder() 
.setCustomMetadata("avatar",mFirebaseUser.getPhotoUrl().toString()) 
.setCustomMetadata("nombre","Muñoz") .setContentType("image/jpg") 
.build(); 

난 아직도 utf-8없이 갈 수있는 문자열을 전달하려고 노력했다. 응용 프로그램을 기다리는 동안 나는 약 20 분 저를 얻을 오류 :

The operation retry limit has-been exceeded. 

나는 그것을 ñ이없는 문자로하려고하면, 그것은 작동합니다. 로그는 재귀 나이 반환

이것은 우리의 안드로이드 SDK의 유니 코드 버그처럼 보이는
09-08 21:33:08.405 3019-3444/cf.castellon.turistorre W/NetworkRequest: error sending network request POST https://firebasestorage.googleapis.com/v0/b/project-1031372115432573568.appspot.com/o 
                     java.net.ProtocolException: exceeded content-length limit of 186 bytes 
                      at com.android.okhttp.internal.http.RetryableSink.write(RetryableSink.java:58) 
                      at com.android.okhttp.okio.RealBufferedSink.close(RealBufferedSink.java:234) 
                      at com.android.okhttp.okio.RealBufferedSink$1.close(RealBufferedSink.java:209) 
                      at java.io.OutputStreamWriter.close(OutputStreamWriter.java:144) 
                      at bzr.a(:com.google.android.gms.DynamiteModulesC:364) 
                      at bzr.b(:com.google.android.gms.DynamiteModulesC:246) 
                      at bzr.a(:com.google.android.gms.DynamiteModulesC:270) 
                      at bzl.onTransact(:com.google.android.gms.DynamiteModulesC:53) 
                      at android.os.Binder.transact(Binder.java:387) 
                      at com.google.android.gms.internal.zzamj$zza$zza.zzss(Unknown Source) 
                      at com.google.android.gms.internal.zzamm.zza(Unknown Source) 
                      at com.google.android.gms.internal.zzamd.zza(Unknown Source) 
                      at com.google.android.gms.internal.zzamd.zzd(Unknown Source) 
                      at com.google.firebase.storage.UploadTask.zzb(Unknown Source) 
                      at com.google.firebase.storage.UploadTask.zzcyn(Unknown Source) 
                      at com.google.firebase.storage.UploadTask.run(Unknown Source) 
                      at com.google.firebase.storage.StorageTask$5.run(Unknown Source) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                      at java.lang.Thread.run(Thread.java:818) 
                     --------- beginning of system 
09-08 21:33:09.605 3019-3444/cf.castellon.turistorre W/ExponenentialBackoff: network unavailable, sleeping 

답변

4

(는 iOS 및 JS에서 작동). 아마도 우리는 하나의 인코딩에서 메타 데이터의 길이를 계산하는 중이고, 다른 인코딩으로 콘텐츠를 전송할 수도 있습니다.

만약 내가 추측해야만한다면, 구성되는 캐릭터 (길이는 ñ == 1)를 기준으로 한도를 계산하지만, 분해 된 것으로 보내면 (길이는 =이므로 ñ == 2). Android 클라이언트에 버그를 신고했으며 곧 해결할 것입니다.

+0

이 항목이 무엇인가요? 나는 도시 이름에 같은 문제가있다. 또는 해결 방법은 무엇입니까? –

+0

현재 나는'.setCustomMetadata (META_LOCATION, Arrays.toString (user.getLocation(). getBytes (Charset.defaultCharset())))))와 같은 문자열 바이트 배열로 보내고 이것을'String [ ] bytesString = location.substring (1, location.length() - 1) .split (","); byte [] bytes = 새 바이트 [bytesString.length]; (int i = 0; i

+0

최신 Android 클라이언트를 사용하고 있습니까? 이 문제를 지금 해결해야한다고 생각합니다 - 확인할 수 있습니까? –

관련 문제