下面的页面有两种形式,一种是没有修饰的简单上传表单,另一种是使用jquery-ui库进行修饰的表单。当我单击常规表单的提交按钮时,数据完全被提交,我的意思是上传的文件完美地转到所需的文件夹,但是当我使用点击按钮触发其他表单的提交功能时,servlet 被调用但相同的参数不会传递给 servlet。我的意思是当我使用装饰表单提交时,没有任何内容被发布到 servlet。
HTML 代码:
<html>
<head>
<script type="text/javascript" src="./jquery.js"></script>
<link rel="stylesheet" type="text/css" href="jquery-ui.css" />
<script type="text/javascript" src="jquery-ui.js"></script>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div id="open-form">Upload your file</div>
<div id="dialog-form" title="Select your file">
<form id="uploadForm" action="./uploadFile "
enctype="multipart/form-data" method="POST">
<fieldset>
<label for="name"><b>Filepath</b></label> <input type="file"
class="text ui-widget-content ui-corner-all" id="name" />
</fieldset>
</form>
</div>
<form action="./uploadFile" enctype=" multipart/form-data" method="POST">
<div class="box2">
Select your File</br>
<input type="file" name="Uploaded file">
<input type="submit" class="button" value="Upload">
</div>
</form>
<script type="text/javascript">
$(function() {
var name = $("#name"), allFields = $([]).add(name);
$("#dialog-form").dialog({
autoOpen : false,
height : 300,
width : 460,
modal : true,
buttons : {
"Upload" : function() {
document.forms["uploadForm"].submit();
},
Cancel : function() {
$(this).dialog("close");
}
},
close : function() {
allFields.val("").removeClass("ui-state-error");
}
});
$("#open-form").click(function() {
$("#dialog-form").dialog("open");
});
});
</script>
</body>
在标签中添加 javascript 只是为了确定。这是servlet代码:
public void doPost(HttpServletRequest req, HttpServletResponse res) {
try {
int formDataLength = req.getContentLength();
byte dataBytes[] = new byte[formDataLength];
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096);
factory.setRepository(new File("/location/y-folder"));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(10000000);
List fileItems = upload.parseRequest(req);
Iterator i = fileItems.iterator();
FileItem fi = ((FileItem) i.next());
InputStream inputStream = fi.getInputStream();
String path = fi.getName();
long h = fi.getSize();
File f = new File("/location/x-folder"+path);
OutputStream out = new FileOutputStream(f);
int len;
while ((len = inputStream.read(dataBytes)) > 0) {
out.write(dataBytes, 0, len);
}
out.close();
inputStream.close();
System.out.println("Fi:-" + fi.toString());
}catch(Exception e){
system.out.println(e);
}