struts上传文件配置
① 关于struts上传文件类型的问题
您好 这是我以前存的,你看看是否对你有帮助,
配置fileupload拦截器
struts2的defaultStack中已经含有fileupload拦截器,如果想加入allowedTypes参数,需要从新写一个defaultstack ,拷贝过来修改一下即可:
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/png,image/gif,image/jpeg
</param>
</interceptor-ref>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
仅修改代码中的
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/png,image/gif,image/jpeg
</param>
</interceptor-ref>
上面配置的是上传文件类型的限制,其实共有两个参数
maximumSize (可选) - 这个拦截器允许的上传到action中的文件最大长度(以byte为单位). 注意这个参数和在webwork.properties中定义的属性没有关系,默认2MB
allowedTypes (可选) - 以逗号分割的contentType类型列表(例如text/html),这些列表是这个拦截器允许的可以传到action中的contentType.如果没有指定就是允许任何上传类型.
② struts2上传文件时在struts.xml的配置有什么意义
package提供了将多个Action组织为一个模块的方式
package的名字必须是唯一的 package可以扩展 当一个package扩展自
另一个package时该package会在本身配置的基础上加入扩展的package
的配置 父package必须在子package前配置
name:package名称
extends:继承的父package名称
abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
namespace:定义package命名空间 该命名空间影响到url的地址!
③ struts2文件上传和下载
1,上传方法
(1),页面form表单添加一个属性为enctype="multipart/form-data" 和method="post"
(2),假设上传预览框为 <input type="file" name="myfile" />
(3),控制器接值的方法为
private File myfile; //要上传的文件
private String myfileFileName; //要上传文件名称
private String myfileContentType; //要上传文件类型
别忘了做set方法
(4), 接到值后可以保存到数据库,也可以保存到硬盘,
>>1 保存到数据库, 数据库表中对应字段要设置为BLOB类型
>>2 保存到硬盘代码如下
InputStream in = new
FileInputStream( myfile);
OutputStream out = new
FileOutputStream( new File("d:\\upload\\"+myfileFileName));
byte[] buffer
= new byte[ in.available() ];
int ins =
in.read(buffer);//读取字节到buffer中
//ins == -1 时
。就已经是文件的结尾了
while ( ins !=
-1 ) {
out.write(buffer, 0, ins);//将缓存buffer中的数据写到文件中
ins = in.read(buffer);
}
in.close();
out.flush();
out.close();
2,下载
(1), 把要下载的文件转成一个输入流InputStream
例如,利用hibernate取得一个文件,文件类型在实体类中为byte[]类型,
inputStream = new
ByteArrayInputStream(book.getMyfile);
其中inputStream 为全局变量,并且做setter和getter方法
(2),在控制器对应的action节点中(struts2配置文件中)添加一个result节点如下:
<result name="download" type="stream">
<param name="contentType">application/zip</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${myFileFileName}"</param>
<param name="bufferSize">1024</param>
</result>
这样,就可以实现上传和下载了.
④ 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,也就是表单数据类型,必须为二进制的。
⑤ struts2中在action中怎么对文件上传进行处理
InputStream is = null;
OutputStream ops = null;
for (int i = 0; i < file.size(); i++) {
try {
TFile tfile = new TFile();
if (file.get(i) == null) {
continue;
}
is = new FileInputStream(file.get(i));
//路径
String root = ServletActionContext.getRequest()
.getRealPath("/uploads");
// 根据系统时间取名字
int pos = this.getFileFileName().get(i).lastIndexOf(".");
String ext = this.getFileFileName().get(i).substring(pos);
// 获得系统时间,产生文件名
long now = System.currentTimeMillis();
String nowtime = String.valueOf(now);
File destFile = new File(root + "/", nowtime + ext);
ops = new FileOutputStream(destFile);
byte[] b = new byte[400];
int length = 0;
while ((length = is.read(b)) > 0) {
ops.write(b, 0, length);
// ops.write(b); 这样子同样可行
}
tfile.setFileName(getFileFileName().get(i));
tfile.setFilePath("/uploads/" + nowtime + ext);
tfile.setFileCreatetime(currentDate);
tfile.setFileDataid(uptdt.getDataId());
fileservice.saveFile(tfile);// 保存上传文件信息
} catch (Exception ex) {
ex.printStackTrace();
} finally {
is.close();
ops.close();
}
}
⑥ struts2中关于文件上传的配置
MIME类型。text/plain表示文本类型
⑦ 使用struts2如何实现文件上传
新建Web Project,在WebRoot下新建upload文件夹
在WebRoot下新建upload.jsp,上传界面
编写上传成功、失败的提示界面。
在WebRoot下新建uploadError.jsp
在WebRoot下新建uploadSuccess.jsp
编写Action类
配置struts.xml文件,重置fileUpload拦截器。
测试,测试完成之后在tomcat下面webapps目录下找到项目对应的文件夹下的upload下查看
⑧ struts2文件上传有没有最大限制
Struts2上传文件的默认大小限制是2M(2097152字节),也可以通过struts.properties文件中的struts.multipart.maxSize修改,如struts.multipart.maxSize=2048 表示一次上传文件的总大小不能超过2K字节。
struts2上传非常方便了,没听说网上有很多上传插件,上传核心代码在后台,看你怎么获取上传的文件数据怎么将数据再写入到本地服务器。
⑨ struts2 文件上传怎么指定保存文件的路径和大小
在action配置文件struts.xml里设置(如下):
<package name="upload" extends="struts-default">
<action name="upload" class="">
<!--配置fieldUpload拦截器--->
<interceptor-ref name="fileUpoad">
<param name="allowedTypes">image/bmp,image/png,image/jpg,image/gif</param>
<param name="maximumSize">200000</param>
</interceptor-ref>
<!---必须显示配置引用struts默认的拦截器栈:defaultStack----->
<interceptor name="defaultStack"></interceptor>
<!---设置上传路径----->
<param name="savePath">/upload</param>
<result name="success">/upload_succ.jsp</result>
<result name="input">/upload.jsp</result>
</action>
</package>
希望能帮到你哈....
⑩ struts2文件上传中,如何限制上传的文件类型
只需要在struts配置文件中配置就OK了
案例如下:
<package name="upload" extends="struts-default" namespace="/upload">
<!-- 配置 -->
<action name="upload" class="www.ijava.com.UploadAction" >
<param name="savePath">e:/images/</param>
<!--往fileuploadInterceptor 注入 -->
<interceptor-ref name="defaultStack">
<!-- 改变当前文件运行上传的类型 -->
<param name="fileUpload.allowedTypes">image/jpeg,image/jpg</param>
<!-- 允许的文件后缀 -->
<param name="fileUpload.allowedExtensions">jpg,jpeg,gif</param>
</interceptor-ref>
<result>/index.jsp</result>
</action>