jsp实现文件的上传及javascript对上传文件的简单验证

[size=large]
前两天做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";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值