关于spring实现文件上传 研究一下ByteArrayMultipartFileEditor,自定义一个fileinfo类,并为它实现一个PropertyEditor,很容易的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于原来的那个新闻发布的代码中没有上传附件的功能,所以,我想添加上传附件的功能;但我不想把文件本身存放在数据库中,我自定义了一个文件上传的ArticleUpload类;原先对应的文章类是Article(这个是和数据库中的表相对应的);两者之间的差别就是前者有一个存放文件本身的成员变量private byte[] file;后者对应的是文件在服务器中的地址;在**-servlet中配置如下: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- set the max upload size100MB --> <property name="maxUploadSize"> <value>104857600</value> </property> <property name="maxInMemorySize"> <value>4096</value> </property> </bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/admin/addarticle.shtml">addArticleFormController</prop> </props> </property> </bean> <bean id="addArticleFormController" class="uestc.gr.web.admin.AddArticleFormController"> <property name="commandClass"><value>ArticleUpload</value></property> <property name="formView"><value>AddArticleForm</value></property> <property name="successView"><value>ArticleManagerFormRedirect</value></property> </bean> 在addArticleFormController控制器中,我添加了如下方法: protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws ServletException { binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor()); }在onSubmit方法中:ArticleUpload articleUpload = (ArticleUpload) o;byte[] file = articleUpload.getFile();//然后做文件保存到磁盘上,以及将articleUpload的数据成员捣腾到Article对象中去,然后再将Article对象写入数据库;另外在原来的Article类中的tile,content等数据成员定义为String,在ArticleUpload类中是应该定义为String还是String[]?在前台jsp的form中添加了enctype="multipart/form-data"不知我这样的实现步骤那里有问题?请楼上的指教!头都搞大了,感觉spring中做有附件的文章发布真是麻烦,以前没有用mvc;直接编写javabean,用smartupload感觉方便得多! public class ArticleUpload { private String title; private String content; private byte[] file;}就这样就行了,有什么麻烦的??在onSubmit方法里得到的command对象直接用,数据都给你填充好了。 to:Saro(这也不是江水,这是二十年流不尽的英雄血。) 文件上传的问题解决了,但是我现在有一个文件操作的问题:文件存放的路径我想用相对路径,如何找到相对与工程文件中的某一个目录?能否象类似dos中的../../../upload 的某种方式? 如何找到工程文件的实际物理路径?我想用:getServletContext().getRealPath("/"),但是运行的时候报错, 关于servlet一个报错问题,求高手解答 数据库升级对struts项目的影响 关于搭建cvs [求教]J2EE和C++该选哪门学习好? spring in action 出问题 用DOMParser解析文件无法正确获取到dom4j生成的xml文件的结点值,怎么办? 哪位帮我看看ejb not bound的问题,困扰我几天了 我想学java,请各位大虾推荐一本好书 来抢分了,请教JAVA工程师,分不够再加!!! JSP自定义标记符库的*.tld XML文件应放在什么地方 求助:在oc4j下运行jms的聊天程序问题,高手请进! hibernate中hql问题
但我不想把文件本身存放在数据库中,我自定义了一个文件上传的ArticleUpload类;原先对应的文章类是Article(这个是和数据库中的表相对应的);两者之间的差别就是前者有一个存放文件本身的成员变量private byte[] file;后者对应的是文件在服务器中的地址;在**-servlet中配置如下:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB -->
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/admin/addarticle.shtml">addArticleFormController</prop>
</props>
</property>
</bean>
<bean id="addArticleFormController" class="uestc.gr.web.admin.AddArticleFormController">
<property name="commandClass"><value>ArticleUpload</value></property>
<property name="formView"><value>AddArticleForm</value></property>
<property name="successView"><value>ArticleManagerFormRedirect</value></property>
</bean> 在addArticleFormController控制器中,我添加了如下方法:
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws ServletException {
binder.registerCustomEditor(byte[].class,
new ByteArrayMultipartFileEditor());
}
在onSubmit方法中:
ArticleUpload articleUpload = (ArticleUpload) o;
byte[] file = articleUpload.getFile();
//然后做文件保存到磁盘上,以及将articleUpload的数据成员捣腾到Article对象中去,然后再将Article对象写入数据库;另外在原来的Article类中的tile,content等数据成员定义为String,在ArticleUpload类中是应该定义为String还是String[]?在前台jsp的form中添加了enctype="multipart/form-data"不知我这样的实现步骤那里有问题?请楼上的指教!头都搞大了,感觉spring中做有附件的文章发布真是麻烦,以前没有用mvc;直接编写javabean,用smartupload感觉方便得多!
private String title;
private String content;
private byte[] file;
}就这样就行了,有什么麻烦的??在onSubmit方法里得到的command对象直接用,数据都给你填充好了。
文件上传的问题解决了,但是我现在有一个文件操作的问题:文件存放的路径我想用相对路径,如何找到相对与工程文件中的某一个目录?能否象类似dos中的../../../upload 的某种方式?
我想用:getServletContext().getRealPath("/"),但是运行的时候报错,