spring实现文件上传

刚才整理了一下我的project,里面还是有相当一部分内容是由价值的~~~~为了减少大家研究的时间,我决定一个个的往上搬。首先搬上来的是spring的上传配置和使用。实现声明啊,你要是想用这个实现100M往上大小的文件上传我劝你还是别往下看了,一定要悬崖勒马啊~~!嘿嘿~~~~

好了,开工!先引用一段我摘录的文字及代码
-------------------------------------------这段就是我研究上传的指南针,大家好好研读-----------------------------------------
Spring由内置的multipart支持web应用中的文件上传。multipart支持的设计是通过定义org.springframework.web.multipart包中的插件对象MultipartResovler来完成的。Spring提供MultipartResolver可以支持Commons FileUpload (http://jakarta.apache.org/commons/fileupload)和COS FileUpload (http://www.servlets.com/cos)。本章后面的部分描述了文件上传是如何支持的。

缺省,Spring是没有multipart处理,因为一些开发者想要自己处理它们。如果你想使用Spring的multipart,需要在web应用的上下文中添加multipart解析器。这样,每个请求就会被检查是否包含multipart。然而,如果请求中包含multipart,你的上下文中定义的MultipartResolver就会解析它。这样,你请求中的multipart属性就会象其它属性一样被处理。

使用MultipartResolver

下面的例子说明了如何使用CommonsMultipartResolver

<bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maximumFileSize">
        <value>100000</value>
    </property>
</bean>
-----------------------------------------------------------------------------
----------------------下面这部分是我的配置文件部分------------------------------
 <!-- 配置上传文件-->
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize">
   <value>1000000</value>
  </property>
 </bean>
 
 <bean id="uploadControl" class="com.f9inux.controller.uploadController">
  <property name="commandClass">
   <value>com.f9inux.bean.uploadfilebean</value>
  </property>
  <property name="successView">
   <value>index</value>
  </property>
  <property name="path">
   <value>g:/web</value>
  </property>
 </bean>
 
 <!-- 配置上传文件-->
-----------------上面由于我使用了springMVC如果有不明白的可以给我留言-------------
----------------uploadController部分(类似于struts的action)-----------------
package com.f9inux.controller;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.f9inux.bean.uploadfilebean;
public class uploadController extends SimpleFormController {
 protected String path;
 
 public void setPath(String path) {
  this.path = path;
 }
 public ModelAndView onSubmit(HttpServletRequest request,
                        HttpServletResponse response,
                        Object command,BindException errors)throws Exception{
  uploadfilebean ub=(uploadfilebean)command;
  //System.out.println(ub.getName());
  //String sp=path+System.getProperty("file.separator")+ub.getName();
  String sp=path+"//"+ub.getName();
  //System.out.println(sp);//输出存放目录
  BufferedOutputStream bf=new BufferedOutputStream(new FileOutputStream(sp));
  bf.write(ub.getContents());
  bf.close();
  return new ModelAndView(this.getSuccessView());
 }
 
 public void initBinder(HttpServletRequest request,
                  ServletRequestDataBinder binder)throws Exception{
  super.initBinder(request,binder);
  binder.registerCustomEditor(
    byte[].class,new ByteArrayMultipartFileEditor());
 }
}
-----------------------上面主要实现的保存文件的逻辑----------------------------
-----------------uploadfilebean部分(这部分主要负责表单内容的承载,类似实体bean)--------
package com.f9inux.bean;
public class uploadfilebean {
 private String name;
 
 private byte[] contents;
 
 public byte[] getContents() {
  return contents;
 }
 public String getName() {
  return name;
 }
 public void setContents(byte[] contents) {
  this.contents = contents;
 }
 public void setName(String name) {
  this.name = name;
 }
}
------------------上面的属性和表单的控件相对应-----------------
----------------表单部分-------------------
 <form method="post" action="upload.do" enctype="multipart/form-data">
            <input type="file" name="contents" οnchange="getvalue()"/>
            <input type="hidden" name="name"/>
            <input type="submit"/>
 </form>
关于enctype部分的解释:使用multipart,你需要创建一个带文件上传域的表单,
让Spring将文件绑定到你的表单上
------------------------------------------
最后请在你的tomcat的command/lib目录中添加commons-io.jar、commons-fileupload.jar包~~!
如果大家看了以后有不明白的地方请留言,我们共同探讨~~~~谢谢
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值