知识大全 上传单个文件

Posted 文件

篇首语:没有失败,只有暂时停止成功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 上传单个文件相关的知识,希望对你有一定的参考价值。

Struts1.x系列教程(8):上传单个文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在Web程序中的上传文件的功能一般会使用<input type=file……/>标签在客户端显示输入要上传的文件名的用户接口 如果读者使用过JSP/Servlet来处理客户端上传的文件就会知道 实现这个功能并不是很容易 而在Struts中为我们提供了一种机制 可以非常方便地将客户端上传的文件保存在服务端

  在Struts Html标签库中提供了一个< file>标签 可以和FormFile类型的属性一起使用 通过这个属性返回的FormFile对象 就可以很方便地获得上传文件的InputStream对象 并做进一步地处理

  在Struts中 一个FormFile对象代表一个上传的文件 FormFile实际上是一个接口 我们可以在 apache struts upload包中找到这个接口 FormFile接口有如下五个常用的方法

   getInputStream()方法

  这个方法用于获得上传文件的java io InputStream对象 我们可以从这个InputStream对象中读取上传文件的数据 并将其写到服务端指定的路径下

   getFileData()方法

  这个方法用于将上传文件的整个内容放到一个byte类型的数组中 如果上传文件的尺寸比较小的话 使用这个方法可以很方便地将上传文件保存到在服务端的指定路径中

   getFileName()方法

  这个方法用于获得上传文件的文件名(不包括文件在客户机的路径部分)

   getFileSize()方法

  这个方法用于获得上传文件的字节数

   destroy()方法

  用于销毁所有和当前上传文件相关的资源

  下面的例子演示了如何使用< file>标签和FormFile对象来上传单个文件 实现这个例子需要如下六步

  【第 步】建立上传文件的JSP页面

  在<samples工程目录>目录中建立一个uploadFile jsp文件 代码如下

     <%@ page pageEncoding= GBK %>  <%@ taglib uri=  prefix= %>  <>    <head>      <title>上传单个文件(文件大小不能超过 M) </title>    </head>    <body><%  在<:form>标签中必须加enctype= multipart/form data    %>      <:form enctype= multipart/form data  action= uploadFile >         <:file property= myFile /><p>  <%  使用<:file>标签让用户输入上传文件名   %>        <:submit value= 上传 />      </:form>    </body>  </>

  【第 步】建立ActionForm的子类    在<samples工程目录> src actionform目录中建立一个UploadForm java文件 代码如下

     package actionform;    import  apache struts action *;  import  apache struts upload FormFile;    public class UploadForm extends ActionForm          private FormFile myFile;  // 这个myFile代表要上传的文件        public FormFile getMyFile()                return myFile;            public void setMyFile(FormFile myFile)                this myFile = myFile;        

  【第 步】建立Struts动作类(Action的子类)    在Struts中 一般在Struts的动作类中处理上传的文件 在<samples工程目录> src action目录中建立一个UploadAction java文件 代码如下

     package action;    import javax servlet *;  import  apache struts action *;  import  apache struts upload FormFile;  import java io *;   import actionform *;    public class UploadAction extends Action        protected void saveFile(FormFile formFile) throws Exception                // 从web xml文件中获得指定的上传路径          String path = this getServlet() getServletConfig() getInitParameter( uploadPath );          InputStream in = formFile getInputStream();   // 获得上传文件的InputStream          // 在服务端指定的上传路径中建立一个空的文件(文件名为getFileName()方法返回的值)          FileOutputStream fout = new FileOutputStream(path + formFile getFileName());             byte buffer[] = new byte[ ];            int count =  ;          //  开始向上传路径中刚建立的文件写入数据 每次写 k字节          while ((count = in read(buffer)) >  )                         fout write(buffer    count);                    fout close();          formFile destroy();   // 上传成功后 销毁当前上传文件的资源            public ActionForward execute(ActionMapping mapping  ActionForm form               HttpServletRequest request  HttpServletResponse response)                UploadForm uForm = (UploadForm) form;          PrintWriter out = null;          try                        response setCharacterEncoding( GBK );              out = response getWriter();              saveFile(uForm getMyFile());  // 将上传文件保存到指写的路径(在web xml中配置)              out println( 上传文件成功 );                    catch (Exception e)                        out println(e getMessage());                    return null;        

  在saveFile方法中 首先从web xml的Servlet初始化参数中获得一个用于保存上传文件的路径 然后从FormFile对象中获得上传文件的InputStream对象 并对这个InputStream对象中的字节进行循环读取 并写到新的文件中 最后 在上传成功后 将FormFile对象销毁

  【第 步】配置struts config xml

  在这一步来配置一下在第 步和第 步分别建立的ActionForm和Action的子类 打开struts config xml文件 在<form beans>中加入如下的子标签

   <form bean name= uploadForm  type= actionform UploadForm  />

  在<action mappings>中加入如下的子标签

   <action name= uploadForm  path= /uploadFile  scope= request  type= action UploadAction  />

  【第 步】设置用于保存上传文件的路径

  打开web xml文件 找到一个叫action的Servlet(也就是用于处理Struts动作的Servlet) 并在<servlet>中加入如下的子标签(假设保存上传文件的路径为D: upload 路径的最后一个字符必须是 )

   <init param>    <param name>uploadPath</param name>    <param value>D:\\upload\\</param value></init param>

  【第 步】限制上传文件的大小    这一步是可选的 如果不限制上传文件的大小 就意味着可以上传任意大小的文件 而一般的应用程序 如电子相册 网络硬盘都会限制上传文件的最大尺寸

  打开struts config xml文件 在<struts config>中加入如下的子标签

   <controller maxFileSize= M  />

cha138/Article/program/Java/ky/201311/28912

相关参考

知识大全 asp限制上传文件大小实例

  一款利用asp文件上传组件把文件上传到服务器之前进行判断文件大小否超过指定大小了本实例讲的是upload_xsoft文件上传组件哦filefilesize>就可以限制文件为多少klishix

知识大全 nginx+php上传大文件解决办法

最常用的方法是通过设置nginx的client_max_body_size解决nginx+php上传大文件主要是设置上传文件大小和php脚本运行时长即可用nginx来做webserver的时上传大文件

知识大全 PHP文件上传代码用法

PHP文件上传代码用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  php文件上传代码编写过程

知识大全 asp利用文件上传组件upload

  我们是利用upload文件上传组件进行文件上传哦  <%ServerScriptTimeOut=%><!#includefile="connasp"><!#inclu

知识大全 PHP 文件编程综合案例-文件上传的实现

PHP文件编程综合案例-文件上传的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP文件

知识大全 ASP+上传文件语法

ASP+上传文件语法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里有一个怎样用ASP+上传

知识大全 文件上传漏洞

PHP网络开发详解:文件上传漏洞  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 Asp.NET大文件上传组件---提取文件内容

Asp.NET大文件上传组件---提取文件内容  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为

知识大全 用cos进行文件上传

  在jsp中实现文件上传可用的类库很多比如有著名的jspsmart公司SmartUploadstruts里面也有我这里说说cos它是OReilly公司的OReilly的图书是很错的这个上传的组件也做

知识大全 无刷新文件上传的简单实现

  网上有很多无刷新文件上传的代码看了很多感觉都比较复杂有些封装的很好但是又缺乏了灵活性个人觉得其实无刷新文件上传并不麻烦所以写下此文供大家参考批评  好了闲话不多说现在我们现在就从头来实现一个无刷新