我正在将CSV文件上传到Java servlet。 我的HTML表单如下所示:
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file">
<input type="submit" name="submitBt" id="submitBt">
</form>
在我的servlet中,我执行以下操作来检索文件:
public void uploadCsv(HttpServletRequest request) {
request.getPart("file")
...
}
设置文件后,servlet会正常工作,一切正常。
我的问题是,我在同一个JSP中有第二个表单。 因此,当提交表单时,我想测试是否设置了包含CSV文件的名为“file”的输入。
我尝试了以下内容:
if (req.getParameter("file") != null)
始终为假
if (request.getParameterMap().containsKey("file"))
总是假的
if (req.getPart("file") != null)
如果未设置文件
,则会引发异常帮助! d:
答案 0 :(得分:0)
您需要使用@MultipartConfig
为您的servlet添加注释,以便让它识别并支持multipart/form-data
个请求,从而让getPart()
正常工作
提交空字段与不提交字段不同。
所以你可以检查这个值是不是一个空字符串
String file = request.getParameter("file");
if (file != null && !file.isEmpty()) {
// It's submitted and filled
}
您可以使用accept属性指定服务器接受的文件类型(可以通过文件上传提交)。
<input type="file" accept=".csv" />
注意:
<input type="file">
<强>更新强>
您可以使用javascript验证强制要求文件上传字段
function validate(){
var inputField = document.getElementById('upload');
if(inp.files.length == 0){
alert("Attachment Required");
inputField.focus();
return false;
}
}
<form enctype="multipart/form-data" method="post" onsubmit="return(validate());">
<input name="file[]" type="file" multiple="multiple" id="upload">
<input type="submit" value="Submit"/>
</form>
答案 1 :(得分:0)
检查是否设置了部件的(脏)方式, 因为req.getPart(&#34; file&#34;)会引发异常:
boolean isSet = false;
try {
req.getPart("file");
isSet = true;
} catch(Exception e) {
isSet = false;
}
if (isSet) {
// Do your work
}
答案 2 :(得分:0)
表单部分像文件一样发送到服务器,因此您可以执行此操作...
boolean isthereafile;
if(request.getPart("file").getSize()>0){
isthereafile = true;
}
if(request.getPart("file").getSize()<=0){
isthereafile = false;
}