使用无效字符添加元数据

时间:2016-09-08 21:26:55

标签: android firebase firebase-storage

我正在尝试在Firebase存储中上传文件。问题是每次添加StorageMetadata name字段包含Muñoz失败。我认为的原因是因为它包含无效字符,元数据是 ñ 。我想知道如何将这个词传递给有效的格式?谢谢

这是一段代码:

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.

如果我尝试使用没有它的角色ñ,它就可以了。 Log以递归方式返回给我:

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

1 个答案:

答案 0 :(得分:4)

这看起来像我们的Android SDK中的unicode错误(它适用于iOS和JS)。据推测,我们在一个编码中计算元数据的长度,同时以不同的编码传输内容。

如果我不得不猜测,我们根据所组成的字符计算限制(ñ == 1)的长度,但是将其作为分解后发送(长度为= = 2,因为它是{ {1}})。我们在Android客户端上提交了一个错误,很快就会解决这个问题。