Struts2自带的上传方法(简单实用)案例图片上传,文件也可,
来源:互联网 发布:淘宝推广工具排名 编辑:程序博客网 时间:2024/05/01 15:17
其实图片上传有好多种方法,一般不建议文件或者文件转码放到数据库中 ,因为太大 还会失真,簡単的就是传到到服务器的自定义的目录下面。
废话少说 简单说下流程,1.jsp(浏览图片名称)---2.XML(过滤限制文件大小,格式等)---3.java(转成流 并读写到指定目录)---4.jsp(浏览图片),我就简单分成4块。
(整个项目的完整代码的下载地址在最下面,但我觉得还是好好看看自己实践的好 注:案例的框架是 Struts2+MyBatis+Sping框架是我CSDN下的,下载后直接访问userAdd.jsp)
(1).JSP上传
用的是struts的S标签 所以别忘了在JSP上开头加上 <%@ taglib prefix="s" uri="/struts-tags"%> 还有就是 enctype="multipart/form-data" 是编码格式的意思 这里し上传二进制数据的意思,上传的话必须加上 不加的话 JSP是默认编码格式是application/x-www-form-urlencoded。
<s:form action="addUser" namespace="/user" method="post" enctype="multipart/form-data"> <div style="font-size:14px"> 图片上传 <input type="file" name="file" value="选择"/> <input type="submit" value="确定"/> </div></s:form>
2.XML(过滤限制文件大小,格式等)
struts 的6个jar包中有一个commons-fileupload-1.2.2.jar ,struts的上传下载作用。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><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"/> <constant name="struts.configuration.xmlreload" value="true"/><!-- 当struts配置文件修改时是否自动加载 --><constant name="struts.devMode" value="true"/><!-- 开发模式下打印详细的错误信息 --><constant name="struts.ui.theme" value="xhtml"/><package name="user" namespace="/user" extends="struts-default"><action name="listUser" class="userAction" method="queryAllUser"><result name="success">/userAdd.jsp</result> </action><action name="addUser" class="userAction" method="add"> <interceptor-ref name="fileUpload"> <param name="allowedTypes"> image/bmp,image/png,image/gif,image/jpeg,image/jpg </param> <param name="maximumSize">502400</param> </interceptor-ref> <!-- 默认的拦截器,必须要写 --> <interceptor-ref name="defaultStack" /> <result name="success" type="redirectAction">listUser.action</result> </action></package></struts>
从上面的配置中很简单看出,就是走Action用拦截器控制一下大小和格式,当然你实际开发的时候,前台的JS和后台的java都要控制的。
3.java(转成流 并读写到指定目录)
发布后项目中的所有都是部署大屏tomcat(以它为例)下面的webapps的, 所以我直接把图片传到webapps下面 的工程下面以就可以了,建一个目录叫upload,我的目录是user/upload (注意:有的是直接在项目下面就建的目录,也行 不过必须刷新下才能出来,因为tomcat会同步你的项目,当然这里是可以配置的)
File file = new File("文件夹");//创建新文件 if(file!=null && !file.exists()){ file.createNewFile(); }也可以选择让JAVA来创建文件夹的
下面看代码
private List<File> file; private List<String> fileFileName; private List<String> fileContentType;//这些基本改声明的变量还是要的和get set方法 public String add() throws IOException { // request.getSession().getServletContext().getRealPath("") 参数可具体到包名。//也可获得 String tomcatAdress="D:\\apache-tomcat-6.0.26\\webapps\\optionLog\\user\\upload"//这换成你要放图片的路径,但记住是tomcat中你项目的指定目录下 File a =new File(tomcatAdress);String patch=a.getPath(); String imgAdress = null; for(int i = 0 ; i < file.size() ; i ++){ InputStream is = new FileInputStream(file.get(i)); //得到图片保存的位置(根据patch来得到图片保存的路径在tomcat下的该工程里) File destFile = new File(patch,System.currentTimeMillis()+this.getFileFileName().get(i)); imgAdress=System.currentTimeMillis()+this.getFileFileName().get(i); //把图片写入到上面设置的路径里 OutputStream os = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; int length = 0 ; while((length = is.read(buffer))>0){ os.write(buffer, 0, length); } is.close(); os.close(); } user.setImgAdress(imgAdress);userService.addUser(user);//user是一个对象有好多属性 imgAdress只是其中之一 return "success";}
把当前时间+图片文件放到数据库imgAdress字段里面
4.jsp(浏览图片)
这就简单了 和正常查询一样
optionLog 是我的项目名 后面是文件夹名 当然你可以用 <%=this.getServletContext().getContextPath()%> 获得项目名称
<s:iterator value="userList"> <tr> <td> <img src="/optionLog/user/upload/<s:property value="imgAdress"/>"/></td> </tr> </s:iterator>
帅气头像展示
完整3大框架上传案例的下载地址:http://download.csdn.net/download/gjldwz/6711995
- Struts2自带的上传方法(简单实用)案例图片上传,文件也可,
- struts2文件上传(使用struts2自带上传方式实现单个文件上传)
- 图片上传简单案例
- 文件上传,图片上传案例
- django的文件 图片上传(简单方法)
- Struts2关于文件上传的案例
- Struts2的文件上传与下载案例
- 使用spring自带的文件上传
- (转载)struts2利用自带的上传拦截器 进行多图表和文本上传
- struts2实现带进度条的文件上传
- 上传图片的简单方法
- springmvc 文件上传,图片上传的方法
- struts2的文件上传(0):struts2的文件上传并且上传目录可动态配置
- struts2文件上传带进度条(一)
- java的简单ftp上传文件案例
- 一个ajax上传文件的简单案例
- Struts2 上传文件方法
- Struts2文件上传--上传图片文件
- 玫瑰花Java web程序
- ThreadLocal
- warning c4273: inconsistent dll linkage
- MFC加入Skin++皮肤美化界面
- Linux 自检和 SystemTap
- Struts2自带的上传方法(简单实用)案例图片上传,文件也可,
- 用DEF文件从DLL中导出C编程++类
- DLL中导出函数的两种方式(dllexport与.def文件
- 工作之余的胡思乱想
- DLL导出类的问题
- mingw编译boost
- 如何安装Minimal SYStem(MSYS)
- vi命令
- warning C4273 And LNK4049: