struts2上传图片的全过程
struts2上传图片的过程
1、写一个上传的jsp页面upload_image.jsp,内容如下:
<body>
<center>
<font color="red"><s:fielderror/></font>
<s:form action="uploadOne" method="post"
enctype="multipart/form-data">
<s:file name="file"
label="文件1"></s:file>
<s:file name="file"
label="文件2"></s:file>
<s:file name="file"
label="文件3"></s:file>
<s:file name="file"
label="文件4"></s:file>
<s:submit label="上传"/>
</s:form>
</center>
</body>
解析:A、
form里面的method必须是post,enctype="multipart/form-data"上传文件必须这样写
B、<s:fielderror/>这个是图片格式或者大小出错的错误提示---要在struts.xml里面先配置
C、name="file",批量上传name的值要一样
2、创建一个action--我的包是com.upload.one
public
class UploadImageAction extends ActionSupport{
private
List<File> file;
private List<String>
fileFileName;
private List<String>
fileContentType;
public String
execute() throws IOException{
//得到工程保存图片的路径
String root =
ServletActionContext.getRequest().getRealPath("/upload");
//循环上传的文件
for(int i = 0 ; i <
file.size() ; i
++){
InputStream is = new
FileInputStream(file.get(i));
//得到图片保存的位置(根据root来得到图片保存的路径在tomcat下的该工程里)
File destFile = new
File(root,this.getFileFileName().get(i));
//把图片写入到上面设置的路径里
OutputStream os = new
FileOutputStream(destFile);
byte[] buffer = new
byte[400];
int length = 0
;
while((length =
is.read(buffer))>0){
os.write(buffer, 0,
length);
}
is.close();
os.close();
}
return
SUCCESS;
}
}
解析:在这个action里面做了几个测试
要在WebRoot下面新建一个文件夹--upload
A、一个一个的打印,明白每个变量到底是干嘛的,到底得到些什么值
B、我图片存放的路径改到了自己想要的路径下面,结果在页面显示的时候,决绝路径无法显示
可能在显示的时候哪里写错了
C、刚开始以后要把得到的图片的名称一个一个得手动添加到fileFileName,结果用
fileFileName.add(图片名称)后,fileFileName的length比添加之前多了一倍
于是明白,在命名的时候要遵循一个规律,这个样的话fileFileName自动的把图片名称
一个一个的添加到里面,不用自己添加
3、配置struts.xml文件
<struts>
<!-- 指定国际化资源文件的baseName为messageResource -->
<constant name="struts.custom.i18n.resources"
value="messageResource"/>
<!-- 设置该应用使用的解码集 -->
<constant
name="struts.i18n.encoding" value="utf-8"/>
<!-- 上传的全部图片的最大限制-->
<constant
name="struts.multipart.maxSize" value="1024102400"/>
<!-- 配置action->
<package name="default" extends="struts-default">
<action name="uploadOne"
class="com.upload.one.UploadImageAction" >
<!--
限制图片的格式和图片的大小 -->
<interceptor-ref name="fileUpload">
<param
name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg
</param>
<param
name="maximumSize">102400</param>
</interceptor-ref>
<!-- 默认的拦截器,必须要写 -->
<interceptor-ref
name="defaultStack" />
<result
name="success">/showImage.jsp</result>
<result
name="input">/upload_image.jsp</result>
</action>
</package>
<constant
name="struts.multipart.saveDir"
value="d:/test"></constant>
</struts>
解析:
A、因为在这里我限制了图片的格式和大小,如果不配置国际化资源文件,那么在页面引入<s:fielderror/>
的时候,显示出的内容不友好,于是自己定义出错显示的内容
B、在action配置里面,限制了单张图片的大小<param
name="maximumSize">102400</param>
如果不再package外面(<constant name="struts.multipart.maxSize"
value="1024102400"/>)限制总的上传大小
那么,当你上传的单个图片超过限定的大小,没事反应,但是后台会报错
C、<constant name="struts.multipart.saveDir"
value="d:/test"></constant>临时存放文件的路径
如果不要这个路径,就会在控制台打印Unable to find 'struts.multipart.saveDir' property setting.
Defaulting to
javax.servlet.context.tempdir
4、messageResource_zh_CN.properties配置文件的内容
#上传文件类型不允许的提示信息
struts.messages.error.content.type.not.allowed=\u4E0A\u4F20\u7C7B\u578B\u9519\u8BEF
#上传文件太大的提示信息
struts.messages.error.file.too.large=\u4E0A\u4F20\u6587\u4EF6\u592A\u5927
解析:当图片的格式不对,上传大小不对时,就会在页面显示相应的错误信息
5、把上传的图片显示出来
<body>
<s:iterator value="fileFileName"
status="length">
<img src='upload/<s:property
value="fileFileName.get(#length.index)"/>'>
</s:iterator>
</body>
总结:
1、错误时要一边上网查,也要自己看,比如同一个错误,网上解决的办法很多,并不是每个都适合自己
还要花时间去试。要有耐心--我差点就没有耐心
2、把出错记录下来,方便以后查看
struts2上传图片的全过程的更多相关文章
- struts2上传图片超过大小给出错误提示
struts2上传图片超过大小给出错误提示 今天碰到上传图片太大,上传不上去返回input视图的界面,回显的错误信息却是乱码,整了好久才整出来,在这里做个记录,方便自己以后查阅,也希望能 ...
- struts2——上传图片格式
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- struts2上传图片
在WEB-INF下新建一个content目录,建立一个upload.jsp <%@ page contentType="text/html; charset=UTF-8" l ...
- 关于struts2上传图片临时文件
- Struts2上传图片时报404错误
可能是struts配置文件中定义的拦截器导致的,后缀拦截导致,将该拦截器去掉,在action类里判断后缀 public String upload()throws Exception{ ActionC ...
- 一个简单的struts2上传图片的例子
https://www.cnblogs.com/yeqrblog/p/4398914.html 在我的大创项目中有对应的应用
- Struts2运行机制(MVC)的分析:
C:(controller)控制器 M:(model)模型处理 V:(view)视图 Struts 2 的运行过程: 核心控制器是FilterDispatcher会过滤 ...
- struts2多图片上传实例【转】
原文地址:http://blog.csdn.net/java_cxrs/article/details/6004144 描述: 通过struts2实现多图片上传. 我使用的版本是2.2.1,使用的包有 ...
- ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案
摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...
随机推荐
- python解析git log后生成页面显示git更新日志信息
使用git log可以查到git上项目的更新日志. 如下两个git项目,我想把git的日志信息解析成一个便于在浏览器上查看的页面. https://github.com/gityf/lua https ...
- 64位操作系统 通过ODP.NET 访问ORACLE 11g
摘要:64位操作系统部署.NET 程序访问oracle时,无法连接问题.(注意:客户端是64位系统 ,服务端是否64位 还是32位无关.) 1.到oracle 官网搜索相关版本的 ODAC网址: ht ...
- BZOJ 4576: [Usaco2016 Open]262144
Description 一个序列,每次可以将两个相同的数合成一个数,价值+1,求最后最大价值 \(n \leqslant 262144\) Sol DP. 这道题是 BZOJ 4580: [Usaco ...
- JavaScript 加载动画Canvas 设计
var c = document.getElementById('c'), ctx = c.getContext('2d'), cw = c.width = 400, ch = c.height = ...
- 【krpano】krpano xml资源解密(破解)软件说明与下载
欢迎加入qq群551278936讨论krpano技术以及获取最新软件. 最新版本软件下载:http://www.cnblogs.com/reachteam/p/5455675.html 该软件已经 ...
- ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换
15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候 ...
- java学习第二天 回顾运算符
一.回顾运算符: 补充: 三元运算符. 代码: /* 三目运算符: 三元运算符: 结构: 条件?条件成立的结果 :条件不成立的结果 ; */ class Demo1 { public static v ...
- AngularJS--自定义指令和模板
一.自定义指令: 1. 先创建模块 var app=angular.module("myApp",[]); 2. 创建自定义指令 (directive后面的参数一:自定义指令 ...
- Revolving Digits(hdu 4333)
题意:就是给你一个数字,然后把最后一个数字放到最前面去,经过几次变换后又回到原数字,问在这些数字中,比原数字小的,相等的,大的分别有多少个.比如341-->134-->413-->3 ...
- ASP.NET知识总结(7.状体保持)
客户端的状态保持方案:ViewState.隐藏域.Cookies.控件状态.URL查询参数 服务端的状态保持方案:Session(会话).Application.Caching(缓存).DataBas ...