您的位置:首页 > 编程语言 > Java开发

使用Struts2实现图片上传到服务器指定的文件夹中

2013-05-19 20:01 1006 查看
    首先要导入stuts2的所有jar包以及文件上传的jar包

    在jsp页面中主要代码:

   <body>

     <form action="fileUp" method="post" enctype="multipart/form-data">
  本地浏览:<input type="file" name="file" /><br/>
 <input type="submit" value="提交"/>

      </form>

  </body>

上传到相应的Action中的代码

public class FileAction extends ActionSupport{
private String des;//待上传的文件将要保存到哪里去
private String filePath;//待上传的文件将要保存到des文件夹下的那个文件中去(使用依赖注入的一个字符串)

private File file;//待上传的文件对象

        //下面需要注意的是这个属性命名格式  必须是文件对象的文件名+ContentType,文件对象文件名+FileName。只有这样才能在上传图片的同时将图片的文件名加后缀,文件类型赋值上去
private String fileContentType; // 上传文件类型
private String fileFileName; // 上传文件的真实名字

       //省阅get/set方法

      public String fileUp()

des=ServletActionContext.getServletContext().getRealPath(this.filePath)+"\\"+this.fileFileName;//将要保存到服务器的文件路径
try {
moveTo(des, this.file.getPath());
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}

  public void moveTo(String des,String from) throws IOException

    {

    /**

    * BufferedInputStream对象为FileInputStream(from)对象添加一些功能,(其实BufferedInputStream对象装饰了InputStream对象)

    * BufferedInputStream对象的创建会创建一个内部缓冲区数组,会将FileInputStream(from)从磁盘读取的指定数据填充到该缓冲区

    * BufferedOutputStream同理

    */

    BufferedInputStream bis=new BufferedInputStream(new FileInputStream(from));

    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(des));

    byte[] b=new byte[1024*4];//每次从FileInputStream读取文件的字节数

    int length=0;

    while((length=bis.read(b))!=-1)

    {

    //将读取到的数据写入到指定的文件路径中

    bos.write(b);

    }

    /**

    * 读完后,需要关闭输入,输出流

    * 

    */

    if(null!=bis)

    {

    bis.close();//本方法的调用是关闭FileInputStream(from)的输入流

    }

    if(null!=bos)

    {

    bos.close();//本方法的调用是关闭FileOutStream(des)的输入流

    }

    }

在看下struts.xml里面有关上传的那个Action的配置

   <action name="fileUp" class="com.action.FileAction" method="fileUp">

             <interceptor-ref name="fileUpload">

                <param name="allowedTypes">

                     image/bmp,image/png,image/gif,image/jpeg        //允许上传的图片格式,不在列表之内的都不能上传

                </param>

             </interceptor-ref>

             <param name="filePath">\\uploadPic</param> //采用依赖注入,将节点的值就是服务器里面要保存图片的那个文件夹(需要注意这个文件夹必须在服务器的要存在)

             <result name="success">showUpload.jsp</result>   

         </action>        

在web.xml里面的配置

   <filter>

     <filter-name>struts</filter-name>

     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

  </filter>

  <filter-mapping>

     <filter-name>struts</filter-name>

     <url-pattern>/*</url-pattern>

  </filter-mapping>    

   实现的关键代码就这些。希望能够帮到大家。谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐