关于安卓上传文件,后台收不到的问题

安卓前端 使用httpPost上传图片到服务器,  需要构建一个HttpEntity,其中FileBody设置了一个ContentType为 image/png 即 new FileBody(file,"image/png"), 之后后台使用getFiles() 无法接收到文件,  但是 使用new FileBody(file), 后台可以收到文件,但是该文件的contentType 为 二进制格式, 不是想要的图片格式 .. 请问大神们,这个怎么解决?

评论区

matbird

2018-06-08 10:26

你先用postman调试一下呗

JFinal

2018-06-08 11:54

可能是你的安卓客户端没有遵守 http 文件上传的协议规范,jfinal 在后端是老老实实按照 http 协议去解析的

这个只能去调整客户端,否则你得在后台通过 getRequest().getInputStream() 得到上传的流以后自行解析上传文件的内容

站在 jfinal 的角度,为了应用面更广,只能去满足 http 协议

superMan911

2018-06-08 16:47

问题已解决, 说来也奇怪, FileBody的构造函数,有4个重载方法,传一个File参数,后台getFile(), 可以收到, 但是getContentType()结果为( application/octet-stream)二进制流, 这样无法判断是不是图片格式, 传2个参数(File,ContentType),后台收不到, 传3个参数(File,ContentType,FileName), 后台有可以收到, 并且可以正常使用getContentType()获取到图片类型.(image/png)

JFinal

2018-06-08 18:00

@superMan911 归根结底是客户端是否遵守 http multipart 上传的规则,jfinal 在后端只是按协议解析而已

superMan911

2018-06-09 18:15

@JFinal 嗯 ,是的, 谢谢 !

热门反馈

扫码入社