string name = request.getParameter("name"); JAVA上传图片文件name返回空null解决办法

不多废话,直接上代码:

JSP代码:

<html>

<body>
<form method="POST"enctype="multipart/form-data"


      action="/apiV2/upload/pic">
    File to upload: <input type="file" name="name"><br /> 
    Name: <input type="text" name="nam"><br /> <br /> <input type="submit"
                                                     value="上传"> Press here to upload the file!
</form>
</body>

</html>


JAVA代码

 String name = request.getParameter("name");
   

断点跟踪,结果name为null空,导致下面的

     MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

MultipartFile mFile = multipartRequest.getFile(name);

mFile也为空

查了一天,别人遇到类似问题的原因和解决方案大致总结如下:

1.属性名写错,name="name"引号里应该是name

2.文件上传时,需在表单form中添加属性ENCTYPE="multipart/form-data"(意思是:设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传。只有使用了 multipart/form-data,才能完整的传递文件数据)。但是,设置ENCTYPE="multipart/form-data"后,servlet中除了file类型表单能获取到,其他value通过request.getParameter()方法获得的值为null。(这个看着比较靠谱)

3.用第三方控件传图片

4.后来想了个办法,修改后代码如下: 

Html代码   收藏代码
  1. <form action="MyServlet" method="post" enctype="multipart/form-data"    
  2.                                        onsubmit="return validForm(this)">  
  3.     <input type="text" name="name"/>  
  4.     <input type="file"/>  
  5.     <input type="submit"/>  
  6. <form>  

Js代码   收藏代码
  1. <script type="text/javascript">  
  2.     function validForm(fm){  
  3.        fm.action = fm.action + "?name=" + fm['name'].value;  
  4.        return true;  
  5.     }  
  6. </script>  

大家可以根据自己的问题对号入座,选择适合自己的解决办法

对于1,发现并没有写错

对于2,其实我一开始是相信的

对于3,由于我太懒,就没有用第三方控件

对于4,尝试并没有解决我的问题

还有就是直接获取文件流,但是获得的流解析不出图片

但是线上代码运行无误,且没用第三方控件,迫使我继续寻求解决方案。通过不断尝试,得出解决方案如下注意对比:

JSP代码:

<html>

<body>
<form method="POST"enctype="multipart/form-data"


      action="/apiV2/upload/pic">
    File to upload: <input type="file" name="upload"><br /> 
    Name: <input type="text" name="name" value=“upload”><br /> <br /> <input type="submit"
                                                     value="上传"> Press here to upload the file!
</form>
</body>

</html>


对,就是本菜鸟把js写错了!!!希望遇到类似问题的朋友可以得到启发,也希望大牛多多指教!

PS.还有一种解决方案:

 public @ResponseBody String uploadImg(HttpServletRequest request, @RequestParam("upload") MultipartFile file) 直接把file绑upload上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值