[size=large]
前两天做OJ的时候,我做的两个功能都涉及到了文件的上传这个功能,所以我觉得很有必要把这个模块的代码记录下来,框架使用的struts2
首先,jsp页面中的的form表单是这样的
[/size]
其中form表单中的action方法我设置中了javascript代码中,用于对上传文件的验证
要正确地把文件传到服务器上,action中的代码为
前两天做OJ的时候,我做的两个功能都涉及到了文件的上传这个功能,所以我觉得很有必要把这个模块的代码记录下来,框架使用的struts2
首先,jsp页面中的的form表单是这样的
[/size]
<form method="post" enctype="multipart/form-data" name="form2">
<table>
<tr>
<td>上传</td>
<td><input type="file" name="file"/>(仅支持.zip格式的压缩文件)</td>
</tr>
</table>
input type="submit" value=" 提交 " onclick="test()"/>
</form>
其中form表单中的action方法我设置中了javascript代码中,用于对上传文件的验证
<script type="text/javascript">
function test()
{
if(form.file.value == "")
{
alert("请选择文件!");//确定文件框不为空
}
else
{
var path = form.file.value;
var name = ".zip";
var c = path.indexOf(name,path.length-4);
/*
验证文件的格式是否为.zip方法为检查文件路径的最后四个字符是否为.zip,是的话返回一个大于0的数字(即它们在整个字符串中的位置,如果没有的话则返回-1)
*/
if(c>=0)
{
form.action="contest/shengcheng.action"; //设置form表单的action
}
else
{
alert("文件格式不正确!");
}
}
}
</script>
要正确地把文件传到服务器上,action中的代码为
private File file;
private String fileFileName; //文件名,只是文件名没有路径
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String upload() throws Exception
{
String root = ServletActionContext.getRequest().getRealPath("/upload");//上传的文件在服务器上保存的路径
File filepath = new File(root);
if(!filepath.exists())
filepath.mkdirs(); //判断/tmp目录是否存在,若不存在,创建
InputStream is = new FileInputStream(file);
File destFile = new File(filepath,fileFileName);
OutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[400];
int length = 0;
while(-1 != (length = is.read(buffer)))
{
os.write(buffer,0,length);
}
is.close();
os.close();
return "success";
}