JAVA网页设计jspSmartUpload上传下载全攻略2
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。js|攻略|上传|下载C.下载文件经常使用的办法1、setContentDisposition
感化:将数据追加到MIME文件头的CONTENT-DISPOSITION域。jspSmartUpload组件会在前往下载的信息时主动填写MIME文件头的CONTENT-DISPOSITION域,假如用户必要增加分外信息,请用此办法。
原型:publicvoidsetContentDisposition(StringcontentDisposition)
个中,contentDisposition为要增加的数据。假如contentDisposition为null,则组件将主动增加"attachment;",以标明将下载的文件作为附件,了局是IE扫瞄器将会提醒另存文件,而不是主动翻开这个文件(IE扫瞄器一样平常依据下载的文件扩大名决意实行甚么操纵,扩大名为doc的将用word程序翻开,扩大名为pdf的将用acrobat程序翻开,等等)。
2、downloadFile
感化:下载文件。
原型:共有以下三个原型可用,第一个最经常使用,后两个用于特别情形下的文件下载(如变动内容范例,变动另存的文件名)。
①publicvoiddownloadFile(StringsourceFilePathName)
个中,sourceFilePathName为要下载的文件名(带目次的文件全名)
②publicvoiddownloadFile(StringsourceFilePathName,StringcontentType)
个中,sourceFilePathName为要下载的文件名(带目次的文件全名),contentType为内容范例(MIME格局的文件范例信息,可被扫瞄器辨认)。
③publicvoiddownloadFile(StringsourceFilePathName,StringcontentType,StringdestFileName)
个中,sourceFilePathName为要下载的文件名(带目次的文件全名),contentType为内容范例(MIME格局的文件范例信息,可被扫瞄器辨认),destFileName为下载后默许的另存文件名。
3、文件上传篇
㈠表单请求
关于上传文件的FORM表单,有两个请求:
1、METHOD使用POST,即METHOD="POST"。
2、增添属性:ENCTYPE="multipart/form-data"
上面是一个用于上传文件的FORM表单的例子:
<FORMMETHOD="POST"ENCTYPE="multipart/form-data"ACTION="/jspSmartUpload/upload.jsp"><INPUTTYPE="FILE"NAME="MYFILE"><INPUTTYPE="SUBMIT"></FORM>
㈡上传的例子
1、上传页面upload.html
本页面供应表单,让用户选择要上传的文件,点击"上传"按钮实行上传操纵。
页面源码以下:
<!--文件名:upload.html纵横软件制造中央雨亦奇(zhsoft88@sohu.com)--><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>文件上传</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><p></p><palign="center">上传文件选择</p><FORMMETHOD="POST"ACTION="jsp/do_upload.jsp"ENCTYPE="multipart/form-data"><inputtype="hidden"name="TEST"value="good"><tablewidth="75%"border="1"align="center"><tr><td><divalign="center">1、<inputtype="FILE"name="FILE1"size="30"></div></td></tr><tr><td><divalign="center">2、<inputtype="FILE"name="FILE2"size="30"></div></td></tr><tr><td><divalign="center">3、<inputtype="FILE"name="FILE3"size="30"></div></td></tr><tr><td><divalign="center">4、<inputtype="FILE"name="FILE4"size="30"></div></td></tr><tr><td><divalign="center"><inputtype="submit"name="Submit"value="上传它!"></div></td></tr></table></FORM></body></html>
2、上传处置页面do_upload.jsp
本页面实行文件上传操纵。页面源码中具体先容了上传办法的用法,在此不赘述了。
页面源码以下:
<%--文件名:do_upload.jsp纵横软件制造中央雨亦奇(zhsoft88@sohu.com)--%><%@pagecontentType="text/html;charset=gb2312"language="java"import="java.util.*,com.jspsmart.upload.*"errorPage=""%><html><head><title>文件上传处置页面</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><%//新建一个SmartUpload对象SmartUploadsu=newSmartUpload();//上传初始化su.initialize(pageContext);//设定上传限定//1.限定每一个上传文件的最年夜长度。//su.setMaxFileSize(10000);//2.限定总上传数据的长度。//su.setTotalMaxFileSize(20000);//3.设定同意上传的文件(经由过程扩大名限定),仅同意doc,txt文件。//su.setAllowedFilesList("doc,txt");//4.设定克制上传的文件(经由过程扩大名限定),克制上传带有exe,bat,jsp,htm,html扩大名的文件和没有扩大名的文件。//su.setDeniedFilesList("exe,bat,jsp,htm,html,,");//上传文件su.upload();//将上传文件全体保留到指定目次intcount=su.save("/upload");out.println(count+"个文件上传乐成!<br>");//使用Request对象猎取参数之值out.println("TEST="+su.getRequest().getParameter("TEST")+"<BR><BR>");//一一提取上传文件信息,同时可保留文件。for(inti=0;i<su.getFiles().getCount();i++){com.jspsmart.upload.Filefile=su.getFiles().getFile(i);//若文件不存在则持续if(file.isMissing())continue;//显现以后文件信息out.println("<TABLEBORDER=1>");out.println("<TR><TD>表单项名(FieldName)</TD><TD>"+file.getFieldName()+"</TD></TR>");out.println("<TR><TD>文件长度(Size)</TD><TD>"+file.getSize()+"</TD></TR>");out.println("<TR><TD>文件名(FileName)</TD><TD>"+file.getFileName()+"</TD></TR>");out.println("<TR><TD>文件扩大名(FileExt)</TD><TD>"+file.getFileExt()+"</TD></TR>");out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"+file.getFilePathName()+"</TD></TR>");out.println("</TABLE><BR>");//将文件另存//file.saveAs("/upload/"+myFile.getFileName());//另存到以WEB使用程序的根目次为文件根目次的目次下//file.saveAs("/upload/"+myFile.getFileName(),su.SAVE_VIRTUAL);//另存到操纵体系的根目次为文件根目次的目次下//file.saveAs("c: emp"+myFile.getFileName(),su.SAVE_PHYSICAL);}%></body></html>
4、文件下载篇
1、下载链接页面download.html
页面源码以下:
<!--文件名:download.html纵横软件制造中央雨亦奇(zhsoft88@sohu.com)--><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>下载</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><ahref="jsp/do_download.jsp">点击下载</a></body></html>
2、下载处置页面do_download.jspdo_download.jsp展现了怎样使用jspSmartUpload组件来下载文件,从上面的源码中就能够看到,下载何其复杂。
源码以下:
<%@pagecontentType="text/html;charset=gb2312"import="com.jspsmart.upload.*"%><%//新建一个SmartUpload对象SmartUploadsu=newSmartUpload();//初始化su.initialize(pageContext);//设定contentDisposition为null以克制扫瞄器主动翻开文件,//包管点击链接后是下载文件。若不设定,则下载的文件扩大名为//doc时,扫瞄器将主动用word翻开它。扩大名为pdf时,//扫瞄器将用acrobat翻开。su.setContentDisposition(null);//下载文件su.downloadFile("/upload/怎样赚取我的第一桶金.doc");%>
注重,实行下载的页面,在Java剧本局限外(即<%...%>以外),不要包括HTML代码、空格、回车或换行等字符,有的话将不克不及准确下载。不信的话,能够在上述源码中%><%之间到场一个换行符,再下载一下,包管堕落。由于它影响了前往给扫瞄器的数据流,招致剖析堕落。
3、怎样下载中文文件
jspSmartUpload固然能下载文件,但对中文撑持不敷。若下载的文件名中有汉字,则扫瞄器在提醒另存的文件名时,显现的是一堆乱码,很扫人兴。下面的例子就是如许。(这个成绩也是浩瀚下载组件所存在的成绩,很少有人办理,搜刮不到相干材料,可叹!)
为了给jspSmartUpload组件增添下载中文文件的撑持,我对该组件举行了研讨,发明对前往给扫瞄器的另存文件名举行UTF-8编码后,扫瞄器便能准确显现中文名字了。这是一个使人乐意的发明。因而我对jspSmartUpload组件的SmartUpload类做了晋级处置,增添了toUtf8String这个办法,修改部分源码以下:
publicvoiddownloadFile(Strings,Strings1,Strings2,inti)throwsServletException,IOException,SmartUploadException{if(s==null)thrownewIllegalArgumentException("File"+s+"notfound(1040).");if(s.equals(""))thrownewIllegalArgumentException("File"+s+"notfound(1040).");if(!isVirtual(s)&&m_denyPhysicalPath)thrownewSecurityException("Physicalpathisdenied(1035).");if(isVirtual(s))s=m_application.getRealPath(s);java.io.Filefile=newjava.io.File(s);FileInputStreamfileinputstream=newFileInputStream(file);longl=file.length();booleanflag=false;intk=0;byteabyte0[]=newbyte;if(s1==null)m_response.setContentType("application/x-msdownload");elseif(s1.length()==0)m_response.setContentType("application/x-msdownload");elsem_response.setContentType(s1);m_response.setContentLength((int)l);m_contentDisposition=m_contentDisposition!=null?m_contentDisposition:"attachment;";if(s2==null)m_response.setHeader("Content-Disposition",m_contentDisposition+"filename="+toUtf8String(getFileName(s)));elseif(s2.length()==0)m_response.setHeader("Content-Disposition",m_contentDisposition);elsem_response.setHeader("Content-Disposition",m_contentDisposition+"filename="+toUtf8String(s2));while((long)k<l){intj=fileinputstream.read(abyte0,0,i);k+=j;m_response.getOutputStream().write(abyte0,0,j);}fileinputstream.close();}/***将文件名中的汉字转为UTF8编码的串,以便下载时能准确显现另存的文件名.*纵横软件制造中央雨亦奇2003.08.01*@params原文件名*@return从头编码后的文件名*/publicstaticStringtoUtf8String(Strings){StringBuffersb=newStringBuffer();for(inti=0;i<s.length();i++){charc=s.charAt(i);if(c>=0&&c<=255){sb.append(c);}else{byte[]b;try{b=Character.toString(c).getBytes("utf-8");}catch(Exceptionex){System.out.println(ex);b=newbyte;}for(intj=0;j<b.length;j++){intk=b;if(k<0)k+=256;sb.append("%"+Integer.toHexString(k).toUpperCase());}}}returnsb.toString();}
注重源码中粗体部分,原jspSmartUpload组件对前往的文件未作任那边理,如今做了编码的转换事情,将文件名转换为UTF-8情势的编码情势。UTF-8编码对英文未作任那边理,对中文则必要转换为%XX的情势。toUtf8String办法中,间接使用Java言语供应的编码转换办法取得汉字字符的UTF-8编码,以后将其转换为%XX的情势。
将源码编译后打包成jspSmartUpload.jar,拷贝到Tomcat的shared/lib目次下(可为一切WEB使用程序所共享),然后重启Tomcat服务器就能够一般下载含有中文名字的文件了。另,toUtf8String办法也可用于转换含有中文的超等链接,以包管链接的无效,由于有的WEB服务器不撑持中文链接。
小结:jspSmartUpload组件是使用JSP举行B/S程序开辟过程当中常常利用的上传下载组件,它利用复杂,便利。如今我又为其加上了下载中文名字的文件的撑持,端的是为虎傅翼,势必博得更多开辟者的喜爱。
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。 是一种语言,用以产生「小应用程序(Applet(s)) 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
页:
[1]