Content-Disposition 值中 42 处的意外字符 0x662:表单数据;名称=“用户文件";文件名=“IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg"; [英] Unexpected char 0x662 at 42 in Content-Disposition value: form-data; name="userfile"; filename="IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg"

查看:97
本文介绍了Content-Disposition 值中 42 处的意外字符 0x662:表单数据;名称=“用户文件";文件名=“IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的安卓应用中使用本地化

I am using localization in my android app

虽然语言设置为阿拉伯语,但在okhttp(okhttp:3.12.0)的文件上传过程中出现此错误

while language is set to Arabic, in the file uploading process of okhttp (okhttp:3.12.0) I am getting this error

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.prominere.health1, PID: 7502
    java.lang.IllegalArgumentException: Unexpected char 0x662 at 42 in Content-Disposition value: form-data; name="userfile"; filename="IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg"
        at okhttp3.Headers.checkValue(Headers.java:272)
        at okhttp3.Headers.of(Headers.java:224)
        at okhttp3.MultipartBody$Part.createFormData(MultipartBody.java:259)
        at okhttp3.MultipartBody$Builder.addFormDataPart(MultipartBody.java:324)
        at com.prominere.health1.ProfileActivity.onValidationSucceeded(ProfileActivity.java:222)
        at com.mobsandgeeks.saripaar.Validator.triggerValidationListenerCallback(Validator.java:719)
        at com.mobsandgeeks.saripaar.Validator.validateFieldsWithCallbackTill(Validator.java:697)
        at com.mobsandgeeks.saripaar.Validator.validateUnorderedFieldsWithCallbackTill(Validator.java:679)
        at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:334)
        at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:295)
        at com.prominere.health1.ProfileActivity.onClick(ProfileActivity.java:139)
        at com.prominere.health1.ProfileActivity_ViewBinding$4.doClick(ProfileActivity_ViewBinding.java:81)
        at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
        at android.view.View.performClick(View.java:5675)
        at android.view.View$PerformClick.run(View.java:22641)
        at android.os.Handler.handleCallback(Handler.java:836)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

我的代码块是

final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/*");
            formBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("action", "updateprofile")
                    .addFormDataPart("userfile", file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file))
                    .addFormDataPart("userid", user.getId())
                    .addFormDataPart("name", name.getText().toString())
                    .build();

我该如何解决这个问题

推荐答案

尝试像这样编码文件名:

try encoding the file name like this :

URLEncoder.encode(file.getName(), "utf-8")

让你的代码变成

final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/*");
        formBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("action", "updateprofile")
                .addFormDataPart("userfile", URLEncoder.encode(file.getName(), "utf-8"), RequestBody.create(MEDIA_TYPE_PNG, file))
                .addFormDataPart("userid", user.getId())
                .addFormDataPart("name", name.getText().toString())
                .build();

这篇关于Content-Disposition 值中 42 处的意外字符 0x662:表单数据;名称=“用户文件";文件名=“IMG_٢٠١٩١١١٥_٠٩٠٢٠٤١١٤.jpg";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆