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

    首先要导入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>    

   实现的关键代码就这些。希望能够帮到大家。谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值