在Spring mvc+中使用文件提交表单;独自创立
这是一个由两部分组成的问题。 我正在尝试提交一个带有文件和文本区域的弹出表单。我无法接收控制器代码中的文件 第1部分-如何在控制器上接收文件 第2部分-提交表单后,如何关闭弹出窗口并保持在同一页面上,以便URL不会更改 弹出代码-在Spring mvc+中使用文件提交表单;独自创立,spring,twitter-bootstrap,spring-mvc,file-upload,springmvc,Spring,Twitter Bootstrap,Spring Mvc,File Upload,Springmvc,这是一个由两部分组成的问题。 我正在尝试提交一个带有文件和文本区域的弹出表单。我无法接收控制器代码中的文件 第1部分-如何在控制器上接收文件 第2部分-提交表单后,如何关闭弹出窗口并保持在同一页面上,以便URL不会更改 弹出代码- <form name="eperform"> <div class="modal fade" id="export" tabindex="-1" role="dialog" aria-hidden="true"> <
<form name="eperform">
<div class="modal fade" id="export" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
<span class="glyphicon glyphicon-remove" aria-hidden="true" style="padding-top: 10px;"></span>
</button>
<h4 class="modal-title custom_align" id="Heading">Provide ID's here:</h4>
</div>
<div class="form-group">
<div>
<fieldset style="margin-left: 10px;">
<legend style="font-size: medium;">File Upload</legend>
<input id="fileUpload" name="fileUpload" type="file" style="margin-left: 20px"/>
</fieldset>
</div>
<br/>
<div>
<fieldset style="margin-left: 10px;">
<legend style="font-size: medium;">Ids</legend>
<label for="envIds"></label>
<textarea class="form-control noresize" rows="4" style="width:98% " name="ids" id="ids" value="">
</textarea>
<input type="hidden" id="server" name="server" value="${server}">
<input type="hidden" id="port" name="port" value="${port}">
<input type="hidden" id="queuename1" name='queuename1' value="">
<input type="hidden" id="environment" name="environment" value="${environment}">
</fieldset>
</div>
</div>
<div class="modal-footer ">
<button type="button" class="btn btn-success" id="eid"
onclick="exportObjects(document.getElementById('ids').value,document.getElementById('queuename1').value,'${port}','${server}','${environment}',document.getElementById('fileUpload').value)">
<span class="glyphicon glyphicon-ok-sign"></span>Export
</button>
<button type="button" class="btn btn-default" data-dismiss="modal">
<span class="glyphicon glyphicon-remove"></span> Cancel
</button>
</div>
</div>
</div>
</div>
</form>
控制器代码-
@RequestMapping(value="/exportObjects", method = RequestMethod.GET)
public ModelAndView exportObjects(HttpServletRequest request) throws Exception{
String server =request.getParameter("server");
String port =request.getParameter("port");
String environment = request.getParameter("environment");
String type =request.getParameter("queueName");
String ids = request.getParameter("ids");
CommonsMultipartFile file = (CommonsMultipartFile) request.getAttribute("fileUpload");
if(file != null && file.getSize() != 0){
String path=request.getServletContext().getRealPath("/");
String filename=file.getOriginalFilename();
System.out.println(path+" "+filename);
try{
InputStream in = file.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
}
System.out.println(out.toString());
}catch(Exception e){System.out.println(e);}
}
// Perform action on ids and file data
ModelAndView model = new ModelAndView();
// I do not know what to do here.
return model;
}
您似乎不熟悉web开发,我建议您花点时间复习一下java web开发知识 以下是两个问题的答案:
- 如果要将文件上载到服务器,必须将enctype=“multipart/form data”添加到表单中
文件上传
- 如果要保持在同一页面上,应使用异步方法提交操作,是最佳选择。您需要提交请求,并在成功回调方法中关闭弹出对话框
已更新@RequestMapping(value=“epperform”,method=RequestMethod.POST) @应答器 公共字符串updateNodeRelation(@RequestParam(value=“fileUpload”) 多部分文件(HttpServletRequest){ System.out.println(file.getOriginalFilename()); 返回“成功”; }
- 如果要提交文件并停留在同一页面上,则需要使用iframe而不是使用Ajax,如下所示:
并使用下面的Javascript代码提交表单并关闭弹出对话框**文件上传 提交
函数提交文件(){ $(“#eperform”).submit(); $(“#dialog_div”).dialog(“close”); }
@RequestMapping(value="/exportObjects", method = RequestMethod.GET)
public ModelAndView exportObjects(HttpServletRequest request) throws Exception{
String server =request.getParameter("server");
String port =request.getParameter("port");
String environment = request.getParameter("environment");
String type =request.getParameter("queueName");
String ids = request.getParameter("ids");
CommonsMultipartFile file = (CommonsMultipartFile) request.getAttribute("fileUpload");
if(file != null && file.getSize() != 0){
String path=request.getServletContext().getRealPath("/");
String filename=file.getOriginalFilename();
System.out.println(path+" "+filename);
try{
InputStream in = file.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder out = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
}
System.out.println(out.toString());
}catch(Exception e){System.out.println(e);}
}
// Perform action on ids and file data
ModelAndView model = new ModelAndView();
// I do not know what to do here.
return model;
}
$.ajax({
url:"exportObjects",
type:"post",
data:{
queueName:queueName,
port:port,
server:server,
environment:environment
},
success:function(data){
//if the request submit success,invoke 'close' method to close the dialog
$("#dialog_div").dialog("close");
}
});