|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。
在经由过程利用FileUpload组件上传的过程当中,经由过程本人的调试,总结以下:1)利用之前的筹办,我用的是commons-fileupload-1.1-dev.jar和commons-io-1.1-dev.jar。注释一下:只管有的材料注释是commons-fileupload-1.0-beta.jar和commons-beanutils.jar,经由过程调试的了局显现并非必要commons-beanutils.jar文件,而是因为在parseRequest(request)的类有关承继于DiskFileItem类。而他有privateorg.apache.commons.io.output.DeferredFileOutputStreamdfos。如许的就必需利用到commons-io-1.1-dev.jar。因而必要导进该包。不然就出classNotFound:.DeferredFileOutputStream的毛病。
2)因为触及文件,就触及到文件体系。但是在java或使用服务器中关于文件体系的会见,就有必定的平安战略。必要将以下权限增加到您使用程序服务器的平安战略文件中:permissionjava.io.FilePermission"<<ALLFILES>>","read,write,delete";详细是增加到..eaweblogic81erverlibweblogic.policy中的.不然会大概出以下非常毛病:org.apache.commons.fileupload.FileUploadException:java.lang.reflect.InvocationTargetExceptionatorg.apache.commons.fileupload.FileUpload.createItem(FileUpload.java:615)atorg.apache.commons.fileupload.FileUpload.parseRequest(FileUpload.java:474)atorg.apache.commons.fileupload.FileUpload.parseRequest(FileUpload.java:355)....
3)关于分歧的服务器,在调试的过程当中会出各类纷歧样的了局。这个与详细的服务器有关。
4)因为FileUpload在不休的更新版本,它的良多办法已不保举利用了(这与该组件的不休的改善有关)。经由过程对最新的匡助文档和网上的材料写了一个尺度的程序以下:fileUpload文件:importjava.io.IOException;importjava.io.PrintWriter;
importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;
importorg.apache.commons.fileupload.*;importjava.util.*;importjava.util.regex.*;importjava.io.*;importorg.apache.commons.fileupload.servlet.*;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
/**创立日期2005-4-10**TODO要变动今生成的文件的模板,请转至*窗口-首选项-Java-代码款式-代码模板*/
/***@authorgaolong1**TODO要变动今生成的范例正文的模板,请转至*窗口-首选项-Java-代码款式-代码模板*/publicclassFileUploadextendsHttpServlet{
/***Destructionoftheservlet.<br>*/privateStringuploadPath="D:addnetFile";//用于寄存上传文件的目次privateFiletempPath=newFile("D:addnetFile mp");//用于寄存一时文件的目次publicvoiddestroy(){super.destroy();//Justputs"destroy"stringinlog//Putyourcodehere}
/***ThedoPostmethodoftheservlet.<br>**Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.**@paramrequesttherequestsendbytheclienttotheserver*@paramresponsetheresponsesendbytheservertotheclient*@throwsServletExceptionifanerroroccurred*@throwsIOExceptionifanerroroccurred*/publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException{res.setContentType("text/html;charset=GB2312");PrintWriterout=res.getWriter();System.out.println(req.getContentLength());System.out.println(req.getContentType());DiskFileItemFactoryfactory=newDiskFileItemFactory();//maximumsizethatwillbestoredinmemoryfactory.setSizeThreshold(4096);//thelocationforsavingdatathatislargerthangetSizeThreshold()factory.setRepository(newFile("d:FileaddnetFile emp"));
ServletFileUploadupload=newServletFileUpload(factory);//maximumsizebeforeaFileUploadExceptionwillbethrownupload.setSizeMax(1000000);try{ListfileItems=upload.parseRequest(req);//assumeweknowtherearetwofiles.Thefirstfileisasmall//textfile,thesecondisunknownandiswrittentoafileon//theserverIteratoriter=fileItems.iterator();
//正则婚配,过滤路径取文件名StringregExp=".+\(.+)$";
//过滤失落的文件范例String[]errorType={".exe",".com",".cgi",".asp"};Patternp=Pattern.compile(regExp);while(iter.hasNext()){FileItemitem=(FileItem)iter.next();//疏忽其他不是文件域的一切表单信息if(!item.isFormField()){Stringname=item.getName();longsize=item.getSize();if((name==null||name.equals(""))&&size==0)continue;Matcherm=p.matcher(name);booleanresult=m.find();if(result){for(inttemp=0;temp<errorType.length;temp++){if(m.group(1).endsWith(errorType[temp])){thrownewIOException(name+":wrongtype");}}try{
//保留上传的文件到指定的目次
//鄙人文中上传文件至数据库时,将对这里改写item.write(newFile("d:"+m.group(1)));
out.print(name+""+size+"<br>");}catch(Exceptione){out.println(e);}
}else{thrownewIOException("failtoupload");}}}}catch(IOExceptione){out.println(e);}catch(FileUploadExceptione){out.println(e);}
//保留上传的文件到指定的目次
//鄙人文中上传文件至数据库时,将对这里改写
}
/***Initializationoftheservlet.<br>**@throwsServletExceptionifanerroroccure*/publicvoidinit()throwsServletException{//Putyourcodehere}
}对应的哀求文件:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>index.html</title>
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"><metahttp-equiv="description"content="thisismypage">
<!--<linkrel="stylesheet"type="text/CSS"href="./styles.css">-->
</head>
<body><formaction="./servlet/FileUpload"method="post"enctype="multipart/form-data"name="form1"><inputtype="file"name="file"><inputtype="submit"name="Submit"value="upload"></form><formaction="./servlet/HelloWord"method="post"><inputtype="submit"/></form><formname="uploadform"method="POST"action="./servlet/FileUpload"ENCTYPE="multipart/form-data">
<tableborder="1"width="450"cellpadding="4"cellspacing="2"bordercolor="#9BD7FF">
<tr><tdwidth="100%"colspan="2">
文件1:<inputname="x"size="40"type="file">
</td></tr>
<tr><tdwidth="100%"colspan="2">
文件2:<inputname="y"size="40"type="file">
</td></tr>
<tr><tdwidth="100%"colspan="2">
文件3:<inputname="z"size="40"type="file">
</td></tr>
</table>
<br/><br/>
<table>
<tr><tdalign="center"><inputname="upload"type="submit"value="入手下手上传"/></td></tr>
</table>
</form>
</body></html>注:该代码由部分来自网上!
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|