当前位置:首页 » 文件管理 » struts2批量上传

struts2批量上传

发布时间: 2023-05-10 13:32:46

① Struts2.0中运用formfile怎样实现图片的批量上传

不能做到,只能一次上传多个,在form中添加多个file控件,如果想实现一次选择多个文件并批量上传的话歼敬启如,可以氏旁慎使用flash+javaScript来实现。

② plupload+struts批量文件上传怎么获得文件数量

1.Java设置上传文件的缓存目录 2.获取地址时,能够读到缓存路闹毕戚径下的文件,是缓存文件,不是源文件,那么上传时直液陵接用缓数闹存文件就行了

③ struts2如何同时上传文件以及获得表单数据

事实上这根本不需要什么其他配置操作,因为这是Struts2,而不是原生Servlet,在Struts2中,拦截器会将request中的表单数据(或者文件格式的数据)都和action类中的属性名称一一对应的注入值(包括文件数据)。所以你需要做的,其实只是在jsp页面(或html)中加入一个file类型的input标签,名称记住(比如为photo),然后在action类中加一个File类型(java.io.File)字段,此字段必须和刚刚的input标签name属性一致,即photo(private File photo;)。最后,需要注意的是,当你妄图从网页上传一个文件类型的表单时,必须将包围它的form类将enctype="multipart/form-data" method="post"加上,即method必须为post,且enctype,也就是表单数据类型,必须为二进制的。

④ jsp+struts2实现excel表格内容的批量导入

jap内羡纤嵌java代码,java代雀消码读取内容,通过<%%>用java代码操作内容,循环,每次循环都为jsp页面中table添加一行。。。不过兄岁仿,如果信息多了的话,,,效率是个问题

⑤ 用Struts2.0+Spring2.0+hibernate3.1怎样实现文件的上传和下载

利用MultipartFile实现文件上传
在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下.
一.主要有两个java类,和一般的servlet放在一起即可.
1.FileUploadBean.java
package chb.demo.web;

import org.springframework.web.multipart.MultipartFile;

/**
* @author chb
*
*/
public class FileUploadBean {

private MultipartFile file;

public void setFile(MultipartFile file) {
this.file = file;
}

public MultipartFile getFile() {
return file;
}
}
2.FileUploadController.java
package chb.demo.web;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

/**
* @author chb
*
*/
public class FileUploadController extends SimpleFormController {

protected ModelAndView onSubmit(
HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException errors){

try
{
// cast the bean
FileUploadBean bean = (FileUploadBean) command;

// let's see if there's content there
MultipartFile file = bean.getFile();

if (file == null) {
throw new Exception("上传失败:文件为�空");
}
if(file.getSize()>10000000)
{
throw new Exception("上传失败:文件大小不能超过10M");
}
//得到文件�名
String filename=file.getOriginalFilename();

if(file.getSize()>0){
try {
SaveFileFromInputStream(file.getInputStream(),"D:/",filename);
} catch (IOException e) {
System.out.println(e.getMessage());
return null;
}
}
else{
throw new Exception("上传失败:上传文件不能为�空");
}
// well, let's do nothing with the bean for now and return:
try {
return super.onSubmit(request, response, command, errors);

} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return null;
}
}

/**保存文件
* @param stream
* @param path
* @param filename
* @throws IOException
*/
public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException
{
FileOutputStream fs=new FileOutputStream( path + "/"+ filename);
byte[] buffer =new byte[1024*1024];
int bytesum = 0;
int byteread = 0;
while ((byteread=stream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
fs.flush();
}
fs.close();
stream.close();
}
}

二.配置文件中如下配置:
1.web.xml,利用spring mvc模式,大家应该都很熟悉了
<servlet>
<servlet-name>chb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>chb</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.chb-servlet.xml,这里要配置映射,并可以设定最大可上传文件的大小
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Multi-Action 用来标识method的变量名定义-->
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName">
<value>action</value>
</property>
<property name="defaultMethodName">
<value>index</value>
</property>
</bean>

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="10000000"/>
</bean>

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/upload.do">fileUploadController</prop>
</props>
</property>
</bean>

<bean id="fileUploadController" class="chb.demo.web.FileUploadController">
<property name="commandClass" value="chb.demo.web.FileUploadBean"/>
<!-- 上传失败时跳转页面 -->
<property name="formView" value="/user/err.jsp"/>
<!-- 上传成功时跳转页面 -->
<property name="successView" value="/user/confirmation.jsp"/>
</bean>
</beans>
三.设定jsp页面
<form id="form1" method="post" action="upload.do" enctype="multipart/form-data">
<tr>
<td width="25%" align="right">上传文件:</td>
<td><input id="file" type="file" NAME="file" style="width:300px;"></td>
</tr>
<tr align="center" valign="middle">
<td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td>
</tr>
</form>
ok,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.

⑥ hibernate+struts 批量上传图片上传,怎么做。要插件吗图片保存在数据库中还是项目中。

图片不是保纳铅和存到数据激岩中,在struts.xml文洞盯件里加个<constant name="struts.multipart.maxSize" value="100000000" />

⑦ 我用struts2做的上传文件功能,但当文件超过2G时页面出现错误,这个有什么办法解决么

struts配置文件里有个上传大小的常量可以配
可以配置default.properties文件,也可以直接配xml常量
常量名是struts.multipart.maxSize
值的话你自己换算就好了 1K*1024*1024什么什么的自己乘完放到value里

⑧ 谁能说说java批量上传文件的原理,并且给个例子吧 谢了

直接用struts2的就行了,批量也不要想的太复杂,就是后台定义成List<File> uploadFile;页面就是<input type="file" name="uploadFile(这里要和你action方法里定义的那个List<File> uploadFile这个属性名一样)"/>,最后后台action方法 里的话就加一个for循环uploadFile就好了。具体struts2的上传去网络搜了,例子太多,记的加分。

⑨ 浅谈怎么使用swfupload工具及其与struts2无缝相接

一、准备工作
从官网上下载发布版v2.2.0.1,仅取下载文件中的SWFUpload.js和swfupload.swf即可,另外可利用官网上的DEMO,从中获取一张PNG图片。

swfupload.swf是上传组件的核心,一个特制的FLASH,具有浏览文件,上传文件的功能,以按钮形式体现在用户圆态旅眼前,上文中提及的PNG图片浮在按钮上,可增强视觉效果。SWFUpload.js与swfupload.swf交互,向开发者提供操作接口。

二、使用步骤

文档中指出,SWFUpload并不是拖放式的上传控件,它需要使用者具备JavaScript(以下简称JS)和DOM的知识,进行UI界面的设计。

点击“选择文件”按钮,文件对话框即刻跳出,用户选择多个文件后,对话框立即关闭,选择的文件进入排队序列,等待上传。当调用SWFUpload 对象的startUpload方法执行上传命令。在此例中,swfu已经实例化为SWFUpload 对象,故可以在JSP中添加一个按钮,在其点击事件中调其该方法。在JSP中添加代码:

<button onclick="swfu.startUpload()">上传</button>

虽如此,但文件没有上传到服务器上,至少客户端不知道上传的目的地。

3.指定客户端将上传信息发送至服务器的URL——struts2登场

swfupload将upload_url属性值作为客户端将文件上传请求信息发送至服务器的URL,读者可理解为struts2表单中的action属性值,upload_url属性值默认为web项目的主页。笔者仅介绍struts2如何接收请求。

struts2已经实现了上传功能,笔者不作详细介绍(由于struts2实现了无缝整合,开发者仅需要将上传的临时进行复制即可,其使用方法易于掌握)。

使用struts2的上传功能,开发者需要知道file标签的name属性值,在此基础上,编写action类即可,并在struts.xml文件中配置名字其名字。在swfupload中,file标签的name属性等价为file_post_name属性,其默认值为Filedata。至此,具备了URL和name属性值,便可开始struts2整合之旅。

首先将action的名字赋值给 swfupload中upload_url属性。接着编写自己的action类,类中包含两个属性Filedata和Filename,Filedata和file_post_name值相同(文档推荐使用默认值Filedata)。 Filedata指向了struts2上传的临时文件路径(action中的execute函数执行完毕,临时文件将被删除),Filename为上传文件的名字。Execute函数实现将临时文件复制到指定的目录(此闭毕例将它放在WEB项目下bin目录下的upload中)。此例action的名字为“upload”,在JSP中将upload_url属性赋值为upload。
4.添加捕获事件函数
swfupload仅实现了后台操作,前台的处理空间留给了开发者,它采用事件触发机制,让开发者捕获特定事件,并鼓励开发者自定义对应的事件处理函数(笔者定义为:捕获事件函数)进行相应处理。即当swfupload内部某一特定事件发生,便触发JS函数,JS函数通过回调机制将函数参数继续传入自定义的JS函数中。Swfupload通过固定的事件函数名属性橘凳值寻找自定义的JS函数,所以在初始化工作中,将自定义的JS函数名赋值给swfupload指定的对应属性即可。
比如,当你选择上传文件后,文件对话框随即关闭,产生关闭对话框完成的事件,内置的fileDialogComplete函数被触发,函数执行完必要的操作后,将整个参数信息传入file_dialog_complete_handler属性值对应的JS函数。所以,开发者仅需将自定义的JS函数名赋值给file_dialog_complete_handler属性即可。Swfupload向外提供的所有事件以及对应的函数定义,文档有详细说明。笔者将“添加捕获XXX事件函数”定义为:自定义JS函数用来捕捉XXX事件,XXX表示swfupload内部捕获事件函数,并函数名赋值给XXX事件对应的属性。比如“添加捕获fileDialogComplete事件函数”表示先自定义JS函数(假设函数名为fileDialogCompleteHandler),用来捕获fileDialogComplete事件,并且将fileDialogCompleteHandler赋值给fileDialogComplete事件对应的属性file_dialog_complete_handler。
为便于管理,笔者建议新建一个JS文件,专门用来存放捕获事件函数,此例为handler.js,注意在JSP中要将其引入。
<script type="text/javascript" src="handler.js"></script>
5.实现批量上传
swfupload不自动批量上传,读者可以尝试选择两个文件点击上传按钮,在服务器端却仅有一个文件,当再次点击上传按钮后,服务器端又多出一个文件。Swfupload虽支持批量上传,但本质仍是单个文件依次上传,这有别于传统设计模式,但其益处却避免了开发者编写大量代码,迭代分析所选文件。
文档指出,添加捕获uploadComplete事件函数(其对应属性为upload_complete_handler),并在其中调用上传函数startUpload,通过递归的方式实现批量上传,即在某个文件上传完成后,再次启动文件上传。此例,该函数被定义为uploadComplete。

在JSP中添加upload_complete_handler属性并赋值为uploadComplete。
6.显示上传文件列表
显示出上传文件列表能够增强用户体验,因为用户将看见选择的文件信息。下文介绍将选择的文件以表格形式显示出来,每行内容为依次为文件名、大小、状态(QUEUED、ERROR、COMPLETE)。
读者不妨在文档中仔细查找是否存在其参数包含file类型集合的API函数,其结果必然徒劳,因为只有参数为file类型的API函数。这在上文已有介绍:swfupload本质依靠单个文件形式上传。该知识点对于对于灵活掌握swfupload举足轻重。故当选择某一文件后,在表格追加显示该文件信息,在文件对话框关闭后,显示表格(表格初始状态为隐藏,在JSP中定义)。


三、从页面跳转到请求流程
此时,本应划上句号,因为所选文件已经上传到upload目录下,但笔者还是想就部分朋友反映“上传完成后,页面不跳转”现象谈谈个人观点。页面不跳转是一个不争的事实,你大可反复尝试。难道这意味着struts2页面跳转功能失效呢?笔者在没搞清楚swfupload原理前,也为之困扰。struts2页面跳转功能仍然良好地在运转,不过它将跳转的页面回响至swfupload,swfupload用内置函数uploadSuccess捕获。对此,理解用户从访问上传页面到页面跳转的整个请求过程至关重要。
首先浏览器访问WEB服务器,打开上传页面,这个过程和打开网页原理相同。当点击“选择文件”按钮后,浏览器通过JS启用swfupload后退出舞台,flash登场。当点击“上传”按钮,flash模拟浏览器向WEB服务器发起连接(新开session),向WEB服务器发送上传信息。可见,当WEB服务器返回信息,目的地不是浏览器,而是flash。整个过程,flash始终和JS紧密交融,将发生的事件通知JS,给开发者留下了足够的编程空间。这不得不赞叹swfupload,将flash设计得淋漓尽致,将JS、WEB服务器、浏览器天衣无缝融入一体。

当WEB服务器响应代码为200时(swfupload表示上传成功的默认代码,可通过修改http_success属性值改变),swfupload便产生上传成功事件,故可通过添加捕获上传成功事件函数得到struts2返回的页面,但不可通过uploadError事件处理struts2拦截器抛出的异常信息,因为swfupload无法解析WEB服务器返回的信息,它仅靠WEB服务器返回代码产生相应事件。
上传成功事件对应的内置函数为uploadSuccess(file object, server data, received response),其中第一个参数为上传的文件,第二个参数为服务器返回的数据,第三个参数为布尔值,从字面上看,估计表示是否收到信息。struts2跳转的页面以HTML代码形式赋值给第二个参数,故可在该捕获事件函数中,置入document.write(server_data)语句,实现页面跳转。
笔者认为swfupload并不希望开发者这样做,因为单个文件的上传机制将导致出现上传完一个文件页面就跳转一次的荒唐现象。其实,只要任何时候调用document.write方法,swfupload立即失效,切忌这样做。
对于实现批量上传成功页面跳转的方法,笔者建议可将server_data缓存,在捕获uploadSuccess事件函数中,如果上传队列为空(getStats().files_queued > 0),再用document.write向swfupload say Goodbye。

⑩ struts2批量上传文件提示以下异常

struts.multipart.saveDir没有配置。
struts.multipart.saveDir用于指定存放临时文件的文件夹
于是在,struts.xml配置文件中增加如下:
<constant
name="struts.multipart.saveDir"
value="/tmp"/>
设置临时文件上传路径。

热点内容
eve脚本破解 发布:2025-02-12 20:07:48 浏览:636
python脚本编程基础 发布:2025-02-12 20:03:40 浏览:486
我的世界服务器里刷怪 发布:2025-02-12 19:57:04 浏览:389
疯狂java视频 发布:2025-02-12 19:38:17 浏览:150
flash免费上传网站 发布:2025-02-12 19:14:03 浏览:191
买脚本一般都在哪里 发布:2025-02-12 19:08:07 浏览:824
恋舞刷分脚本se下载 发布:2025-02-12 18:56:53 浏览:8
c语言大小写转换程序 发布:2025-02-12 18:55:23 浏览:524
三星耳机坏了怎么配置 发布:2025-02-12 18:54:46 浏览:975
简易编程语言 发布:2025-02-12 18:48:07 浏览:523