您的位置:首页 > 产品设计 > UI/UE

The request sent by the client was syntactically incorrect.

2016-09-20 16:51 555 查看
客户端使用httpclient上传文件到服务端由spring mvc接收

本来用addBinaryBody传入File参数是正常运作的

然后为了实现进度条跟踪而改为传入InputStream参数就报错了

错误:


Required request part '' is not present


The request sent by the client was syntactically incorrect.

由于使用了Commons.io的CountingInputStream,还一度认为是inputstream不兼容的问题

后来甚至尝试直接覆写InputStreamBody的write方法来手动跟踪进度,结果还是同样的错误,
在阅读源码的时候才注意到
public MultipartEntityBuilder addBinaryBody(final String name, final InputStream stream) {
return addBinaryBody(name, stream, ContentType.DEFAULT_BINARY, null);
}
最后那个参数直接传入了空
而原来传入File的方法,则根据文件获取了名字
public MultipartEntityBuilder addBinaryBody(
final String name, final File file) {
return addBinaryBody(name, file, ContentType.DEFAULT_BINARY, file != null ? file.getName() : null);
}


改为使用public MultipartEntityBuilder addBinaryBody(

            final String name, final InputStream stream, final ContentType contentType,

            final String filename)
方法手动添加filename
加上名字之后果然就没有报错了,顺利上传并跟踪更新了进度条。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java spring mvc httpclient
相关文章推荐