jsp实现文件的上传及javascript对上传文件的简单验证
前两天做OJ的时候,我做的两个功能都涉及到了文件的上传这个功能,所以我觉得很有必要把这个模块的代码记录下来,框架使用的struts2
首先,jsp页面中的的form表单是这样的
<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>
<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> 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";}