我正在尝试在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
答案 0 :(得分:4)
这看起来像我们的Android SDK中的unicode错误(它适用于iOS和JS)。据推测,我们在一个编码中计算元数据的长度,同时以不同的编码传输内容。
如果我不得不猜测,我们根据所组成的字符计算限制(ñ
== 1)的长度,但是将其作为分解后发送(长度为= = 2,因为它是{ {1}})。我们在Android客户端上提交了一个错误,很快就会解决这个问题。