背景
网页上传文件到A服务器,A将文件传到B服务器保存,B接收文件后出现如下错误:
java.io.IOException: java.io.FileNotFoundException:
...\uploads\c4e5540d5c????_??.png (文件名、目录名或卷标语法不正确。)
原因是文件名称含有中文,导致乱码。
经测试,只有当文件名称含中文,且从A传到B后会出现问题。
解决
设置MultipartEntityBuilder
的mode
为HttpMultipartMode.RFC6532
,将数据以UTF-8
编码格式处理。
builder.setMode(HttpMultipartMode.RFC6532);
后记
最开始,在A、B代码中各种设置转UTF-8
都无效,网上搜了各种方式。解决该问题用了将近1天时间。