问题描述
我使用 Zelory Compressor 在将图像上传到服务器之前对其进行压缩。它可以工作,除非图像文件路径的开头或中间有特殊字符(例如 ç、~、^ 等)我想解决这个问题,因为它是巴西葡萄牙语 (pt_BR) 应用程序,而不是只是要求用户上传带有有效路径的图片。
我的依赖:
implementation 'id.zelory:compressor:2.1.0'
我的压缩方法:
fun compress(context: Context,path: String) : MultipartBody.Part {
var file = File(path)
try {
file = Compressor(context)
.setMaxWidth(1080)
.setCompressFormat(Bitmap.CompressFormat.JPEG)
.compresstoFile(file)
} catch (ex: Exception) {
Log.d("Error : ","Erro upload: ${ex.message}")
}
return MultipartBody.Part.createFormData(
"document",file.name,RequestBody.create(MediaType.parse("image/*"),file)
)
}
堆栈跟踪:
Caused by: java.lang.IllegalArgumentException: Unexpected char 0xe7 at 91 in Content-disposition value: form-data; name="document"; filename="Teste acentuação de línguas latinas.png"
at okhttp3.Headers.checkValue(Headers.java:272)
at okhttp3.Headers.of(Headers.java:224)
at okhttp3.MultipartBody$Part.createFormData(MultipartBody.java:259)
at br.com.company.util.CameraUtils$Companion.compress(CameraUtils.kt:196)
at br.com.company.viewmodel.refundAttachFilesviewmodel.uploadDocument(refundAttachFilesviewmodel.kt:29)
at br.com.company.ui.refund.refundAttachFilesActivity.onActivityResult(refundAttachFilesActivity.kt:132)
at android.app.Activity.dispatchActivityResult(Activity.java:7454)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4384)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4433)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1836)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6702)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)