总的说图片上传有两种方式,一种是把图片文件写到数据库中,另一种是存到服务器文件目录中。写到数据库中的图片文件需要转换成二进制流的格式,占用数据库空间比较,适合少量图片的存储,比如说,系统中某些小图标,写到数据库中的优点是比较安全,不容易被用户不小心删除。
在struts2中实现(以图片上传为例)
1.FileUpload.jsp代码清单如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>The FileUplaodDemo In Struts2</title> </head> <body> <s:form action="fileUpload" method="post" enctype="multipart/form-data" namespace="/"> <s:file name="myFile" label="MyFile" ></s:file> <s:textfield name="caption" label="Caption"></s:textfield> <s:submit label="提交"></s:submit> </s:form> </body> </html>
2.ShowUpload.jsp的功能清单如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>ShowUpload</title> </head> <body> <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" > <img src ="UploadImages/<s:property value ="imageFileName"/> "/> <br /> <s:property value ="caption"/> </div > </body> </html>
3.FileUploadAction.java的代码清单如下 :
package com.chris; import java.io.*; import java.util.Date; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class FileUploadAction extends ActionSupport{ private static final long serialVersionUID = 572146812454l ; private static final int BUFFER_SIZE = 16 * 1024 ; //注意,文件上传时<s:file/>同时与myFile,myFileContentType,myFileFileName绑定 //所以同时要提供myFileContentType,myFileFileName的set方法 private File myFile; //上传文件 private String contentType;//上传文件类型 private String fileName; //上传文件名 private String imageFileName; private String caption;//文件说明,与页面属性绑定 public void setMyFileContentType(String contentType) { System.out.println("文件类型 : " + contentType); this .contentType = contentType; } public void setMyFileFileName(String fileName) { System.out.println("文件名称 : " + fileName); this .fileName = fileName; } public void setMyFile(File myFile) { this .myFile = myFile; } public String getImageFileName() { return imageFileName; } public String getCaption() { return caption; } public void setCaption(String caption) { this .caption = caption; } private static void copy(File src, File dst) { try { InputStream in = null ; OutputStream out = null ; try { in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE); out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE); byte [] buffer = new byte [BUFFER_SIZE]; while (in.read(buffer) > 0 ) { out.write(buffer); } } finally { if ( null != in) { in.close(); } if ( null != out) { out.close(); } } } catch (Exception e) { e.printStackTrace(); } } private static String getExtention(String fileName) { int pos = fileName.lastIndexOf("."); return fileName.substring(pos); } @Override public String execute() { imageFileName = new Date().getTime() + getExtention(fileName); File imageFile = new File(ServletActionContext.getServletContext().getRealPath("UploadImages" ) + "/" + imageFileName); copy(myFile, imageFile); return SUCCESS; } }
注:此时仅为方便实现Action所以继承ActionSupport,并Overrider execute()方法
在struts2中任何一个POJO都可以作为Action
4.struts.xml清单如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="example" namespace="/" extends="struts-default"> <action name="fileUpload" class="com.chris.FileUploadAction"> <interceptor-ref name="fileUploadStack"/> <result>/ShowUpload.jsp</result> </action> </package> </struts>
5.web.xml清单如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter > <filter-name > struts-cleanup </filter-name > <filter-class > org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class > </filter > <filter-mapping > <filter-name > struts-cleanup </filter-name > <url-pattern > /* </url-pattern > </filter-mapping > <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>Index.jsp</welcome-file> </welcome-file-list> </web-app>
以上内容是小编给大家介绍的Java struts2中如何实现图片上传的全部内容,希望大家喜欢。
本书的封面图片的标题是“日本女性的着装”(Habit of a Lady of Japan)。这张图源自Thomas Jefferys所著的《不同民族服饰的收藏》(Collection of the Dress of Different Nations)[1]第四卷(大概在1757年到1772年间出版)。Thomas收集的服饰包罗万象,他的绘画优美而又细腻,对欧洲戏剧服装设计产生了长达200多年的
本文向大家介绍C# 数组实例介绍(图文),包括了C# 数组实例介绍(图文)的使用技巧和注意事项,需要的朋友参考一下 数组即是一组相同类型组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素。 数组是具有相同类型的一组数据。当访问数组中的数据时,可以通过下标来指明。c#中数组元素可以为任何数据类型,数组下标从0开始,即第一个元素对应的下标为0,以后逐个递增。数组可以一维也可多维。 一
本文向大家介绍jquery.Jcrop结合JAVA后台实现图片裁剪上传实例,包括了jquery.Jcrop结合JAVA后台实现图片裁剪上传实例的使用技巧和注意事项,需要的朋友参考一下 本文介绍了头像裁剪上传功能,用到的技术有 jQuery,springmvc,裁剪插件用的是jcrop(中间遇到很多坑,最终跨越)。 图片上传步骤: 1.用户选择图片 2.将图片传入后台:用户选择图片的时候选择的是各
本文向大家介绍java实现多图片上传功能,包括了java实现多图片上传功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现多图片上传功能的具体代码,供大家参考,具体内容如下 开发环境:jdk1.7,MyEclipse10 框架用的是spring。用到了maven工具(maven的包百度下就可以)。 四步完成,全部复制改参数就可以 第一步:先在Spring中对图片进行限制
本文向大家介绍Android实现图片选择上传功能实例,包括了Android实现图片选择上传功能实例的使用技巧和注意事项,需要的朋友参考一下 效果图: 添加依赖: 选择图片:compile 'com.lzy.widget:imagepicker:0.5.4' github地址:https://github.com/jeasonlzy/ImagePicker 上传文件:compile 'com.zhy
本文向大家介绍java web图片上传和文件上传实例,包括了java web图片上传和文件上传实例的使用技巧和注意事项,需要的朋友参考一下 图片上传和文件上传本质上是一样的,图片本身也是文件。文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作。 注意事项 1.form表单一定要写属性enctype="multipart/form-data" 2.为了能保证文件能上传成功