开发者社区> 问答> 正文

SpringMVC在上传文件的时候提示The current request i?报错

/** 保存订单 */
@RequestMapping("/insertOrder")

public @ResponseBody Object insertOrder(String userId,@RequestParam(required=false) MultipartFile voice) {}

比如是这样一个Controller。 对方是移动端发送POST请求来执行这个方法。 当它发布的请求没有voice这个参数的时候就会报错。。。

以前在用form提交的时候知道如何解决,但是单纯的POST请求不知道如何解决了。

展开
收起
爱吃鱼的程序员 2020-06-14 16:22:13 503 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    参照这行 httpURLConnection.setRequestProperty( "Content-Type",  

    •            "multipart/form-data;boundary=" + boundary);  

    设置消息头

    1.  String uploadUrl = actionUrl;  
    2.     String end =  "\r\n";  
    3.     String twoHyphens =  "--";  
    4.     String boundary =  "******";  
    5.      try  
    6.     {  
    7.       URL url =  new URL(uploadUrl);  
    8.       HttpURLConnection httpURLConnection = (HttpURLConnection) url  
    9.           .openConnection();  
    10.       httpURLConnection.setDoInput( true);  
    11.       httpURLConnection.setDoOutput( true);  
    12.       httpURLConnection.setUseCaches( false);  
    13.       httpURLConnection.setRequestMethod( "POST");  
    14.       httpURLConnection.setRequestProperty( "Connection",  "Keep-Alive");  
    15.       httpURLConnection.setRequestProperty( "Charset",  "UTF-8");  
    16.       httpURLConnection.setRequestProperty( "Content-Type",  
    17.            "multipart/form-data;boundary=" + boundary);  
    18.   
    19.       DataOutputStream dos =  new DataOutputStream(httpURLConnection.getOutputStream());  
    20.       dos.writeBytes(twoHyphens + boundary + end);  
    21.       dos.writeBytes( "Content-Disposition: form-data; name=\"file\"; filename=\""  
    22.               + srcPath.substring(srcPath.lastIndexOf( "/") +  1)  
    23.               +  "\"" + end);  
    24.       dos.writeBytes(end); 

    form的 enctype设置一下

    <formaction="/api/v1.0/tests/testfile"httpMethod="post"enctype="multipart/form-data"><inputtype="file"name="testfile"/><buttontype="submit">提交</button></form>



    回复 @Dreampie:好的,非常感谢~~回复 @Leaybc:post提交也可以设置的可以参考我的Resty框架client设计里面有文件上传和下载http://dreampie.gitbooks.io/resty-chs/content/client.html囧,这个我知道,但是他们不是用form提交的,直接用post提交的

    移动端通过httpclient发送文件,具体百度。

    服务端

    @RequestMapping("/insertOrder")

    @ResponseBody

    public ObjectinsertOrder(StringuserId,HttpServletRequestreq){

    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;          #008200;background-color:#FAFAFA;">// 获得文件:         MultipartFile file = multipartRequest.getFileMap() ; 

    }

    那是不是客户端发送方式不正确关键是他们加了voice这个参数就行,不加就会报错,哪怕这个参数的内容是null都是正常的。http://www.oschina.net/code/snippet_1863482_43648
    2020-06-14 16:22:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载