知识大全 用JSP实现上传文件的两种方法
Posted 文件
篇首语:后悔过去,不如奋斗将来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用JSP实现上传文件的两种方法相关的知识,希望对你有一定的参考价值。
用JSP实现上传文件的两种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
以前用cos作文件上传 但是对于文件上传后的改名还需要借助其他的工具
摘录如下:
在用Java开发企业器系统的使用 特别是涉及到与办公相关的软件开发的时候 文件的上传是客户经常要提到的要求 因此有 一套很好文件上传的解决办法也能方便大家在这一块的开发
首先申明 该文章是为了自己记录一备以后开发需要的时候 不用手忙脚乱哈哈
现在在国内用的非常多的一般是两种方法解决来解决文件上传
cos jar + uploadbean jar + filemover jar 这个是用的非常普遍的 原因是因为他操作方便 是我们不必再去关注 那些文件的输入和输出流 使我们从底层的流中解脱出来 UploadFile UploadBean MultipartFormDataRequest
<%@ page contentType="text/;charset=gb " %> <head> <title>fbysss UploadBean 示例</title> <! meta equiv="Content Type" content="text/; charset=iso " > <! meta equiv="Content Type" content="text/; charset=gb " > </head> <FORM name=form METHOD="POST" ACTION="sssupload jsp" ENCTYPE="multipart/form data"> <input name=title type= "text" value="中文字"> <td >附件</td> <td > <input name=attach type=FILE id="attach" size=" " > </td> <input name=ok type= "submit" value="提交"> </form>
读取表单页面sssgetdata jsp
<! //========================================================================== //文件 UploadBean上传实例 //功能 解决中文乱码 完成文件上传 并提供上传改名解决方案 //作者 fbysss //msn:jameslastchina@hotmail //========================================================================== > <%@ page contentType="text/;charset=GBK" %> <%@ page language="java" import=" jspsmart upload *"%> <%@ page import="java text SimpleDateFormat"%> <%@ page import="java io File"%> <%@ page import="java util *"%> <%@ page import="javazoom upload *"%> <%@ page import="uploadutilities FileMover"%> <head> <meta equiv="Content Type" content="text/; charset=gb "> </head> <% request setCharacterEncoding("GBK");//设置编码格式 就不用一个个转码了 FileMover fileMover = new FileMover();//你也可以使用自带的实例中jsp:useBean的形式 UploadBean upBean = new UploadBean(); MultipartFormDataRequest mrequest = null; Hashtable files = null;
if (MultipartFormDataRequest isMultipartFormData(request)) mrequest = new MultipartFormDataRequest(request null * * MultipartFormDataRequest COSPARSER "GBK");//注意这里也要设置编码参数 String sTt = mrequest getParameter("title"); out println("<br>Title 是 "+sTt +"<br>"); String sTt = new String(sTt getBytes("ISO ") "GBK"); out println("<br>Title 是 "+sTt +"<br>"); //这里用来测试title参数是否正确 调试的时候 加一句if (true)return;即可 files = mrequest getFiles();
//获取修改前的文件名 String sOldFileName =mrequest getParameter("oldfilename"); out println("sOldFileName:"+sOldFileName); String sWebRootPath = request getRealPath("/");//得到你的web应用的根 String sPath=sWebRootPath+"attach"; int iFileCount = ; String sServerFileName=""; String sLocalFileName = ""; //文件获取 if ( (files != null) || (!files isEmpty()) )
iFileCount = files size(); UploadFile file = (UploadFile) files get("attach"); sLocalFileName=file getFileName(); out println("sLocalFileName:"+sLocalFileName); int ii= sLocalFileName indexOf(" "); //取文件名的后缀 String sExt = sLocalFileName substring(ii sLocalFileName length()); //得到不重复的文件名 java util Date dt = new java util Date(System currentTimeMillis()); SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS"); sServerFileName= fmt format(dt); sServerFileName =sServerFileName + sExt; //如果不存在该目录 则新建一个 File dir =new File(sPath); if (!dir exists()) dir mkdirs(); upBean setFolderstore(sPath);//设置要上传的目录 upBean addUploadListener(fileMover);//增加filMover监听 fileMover setNewfilename(sServerFileName);//设置服务器上的文件名 upBean store(mrequest "attach");//上传 out println("file path is "+sPath+"/"+sServerFileName);
%>
Demo注意事项 cos jar uploadbean jar filemover jar这几个包必须有 必备下载地址 UploadBean FileMover 参考下载地址 ChinesUpload例子 参考了fbysss的一篇文章 apache struts upload FormFile Struts 的 apache struts upload FormFile类 很方便 不用自己写 也不用写一个jsp调用jspsmartupload就可以搞定
选择上传文件页面 selfile jsp
<%@ taglib uri="/WEB INF/struts tld" prefix=""%> <:> <:form action="/uploadsAction do" enctype="multipart/form data"> <:file property="theFile"/> <:submit/> </:form> </:>
UpLoadAction java import java io *; import javax servlet *; import apache struts action *; import apache struts upload FormFile;
/** *//** * <p>Title:UpLoadAction</p> * <p>Description: QRRSMMS </p> * <p>Copyright: Copyright (c) jiahansoft</p> * <p>Company: jiahansoft</p> * @author wanghw * @version */
public class UpLoadAction extends Action public ActionForward execute(ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response) throws Exception if (form instanceof uploadsForm) //如果form是uploadsForm String encoding = request getCharacterEncoding(); if ((encoding != null) && (encoding equalsIgnoreCase("utf "))) response setContentType("text/; charset=gb ");//如果没有指定编码 编码格式为gb UpLoadForm theForm = (UpLoadForm ) form; FormFile file = theForm getTheFile();//取得上传的文件 try InputStream stream = file getInputStream();//把文件读入 String filePath = request getRealPath("/");//取当前系统路径 ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputStream bos = new FileOutputStream(filePath + "/" + file getFileName());//建立一个上传文件的输出流 //System out println(filePath+"/"+file getFileName()); int bytesRead = ; byte[] buffer = new byte[ ]; while ( (bytesRead = stream read(buffer )) != ) bos write(buffer bytesRead);//将文件写入服务器 bos close(); stream close(); catch(Exception e) System err print(e); //request setAttribute("dat" file getFileName()); return mapping findForward("display"); return null;
UpLoadForm java
import javax servlet import apache struts action *; import apache struts upload *;
/** *//** * <p>Title:UpLoadForm</p> * <p>Description: QRRSMMS </p> * <p>Copyright: Copyright (c) jiahansoft</p> * <p>Company: jiahansoft</p> * @author wanghw * @version */
public class UpLoadForm extends ActionForm public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = " apache struts webapp upload MaxLengthExceeded"; protected FormFile theFile; public FormFile getTheFile() return theFile; public void setTheFile(FormFile theFile) this theFile = theFile; public ActionErrors validate(ActionMapping mapping HttpServletRequest request) ActionErrors errors = null; //has the maximum length been exceeded? Boolean maxLengthExceeded = (Boolean) request getAttribute(MultipartRequestHandler ATTRIBUTE_MAX_LENGTH_EXCEEDED); if ((maxLengthExceeded != null) && (maxLengthExceeded booleanValue())) errors = new ActionErrors(); errors add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED new ActionError("maxLengthExceeded")); return errors;
//这是相对应的form 还有其他属性可以设置 具体可以参考struts的上传例子
struts config xml
cha138/Article/program/Java/JSP/201311/20075
相关参考
JSP如何实现文件上传 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序如下> packag
如何用JSP编写文件上传 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果你曾用VB编写文件上
JSP设计模式中的两种常见模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果你经常去S
用JSP写出FileUpload上传小程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! voi
Java上传文件(简单例子) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! jsp页面 <
Hibernate的两种配置文件格式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Hibern
VB中文件操作的两种方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 文本文件的操作 此种方
解析PHP实现下载文件的两种方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对使用PH
这篇文章介绍了将aspx转换为的两种方法有需要的朋友可以参考一下希望对你有所帮助 方法一:根据模板生成保持在文件夹中思路分析:写一个自定义的HTM模板 其中需要替换的地方用$v
C#用jquery多个文件上传 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <%@Pag