文档库 最新最全的文档下载
当前位置:文档库 › Struts2 上传图片示例 图片上传

Struts2 上传图片示例 图片上传

Struts2 上传图片示例 图片上传
Struts2 上传图片示例 图片上传

实现原理

Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。

需要的包

jsp页面

FileUpload.jsp:

<% @ page language = " java " contentType = " text/html; charset=utf-8 " pageEncoding = " utf-8 " %>

<% @ taglib prefix = " s " uri = " /struts-tags " %>

< html xmlns ="https://www.wendangku.net/doc/9b14259186.html,/1999/xhtml" >

< head >

< title > Struts 2 File Upload

< body >

< form action ="fileUpload" method ="POST" enctype ="multipart/form-data" > < file name ="file" ContentEditable="false"/>

备注:form中enctype ="multipart/form-data"是必须的,莫漏,ContentEditable="false"是用来禁止用户在浏览地址框里进行手动输入的。

Action

package tutorial;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

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 ;

private File myFile;

private String contentType;

private String fileName;

private String imageFileName;

private String caption;

public void setMyFileContentType(String contentType){ this .contentType = contentType;

}

public void setMyFileFileName(String 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 = https://www.wendangku.net/doc/9b14259186.html,stIndexOf( " . " );

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;

}

}

备注:

myFile,还有myFileContentType(上传文件的MIME类型)和myFileFileName和jsp页面中的file标签对应

显示页面

<% @ page language = " java " contentType = " text/html; charset=utf-8 " pageEncoding = " utf-8 " %>

<% @ taglib prefix = " s " uri = " /struts-tags " %>

< html xmlns ="https://www.wendangku.net/doc/9b14259186.html,/1999/xhtml" >

< head >

< title > Struts 2 File Upload

< body >

< div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >

< img src ='UploadImages/ ' />

< br />

< s:property value ="caption" />

Action的配置文件

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"https://www.wendangku.net/doc/9b14259186.html,/dtds/struts-2.0.dtd" >

< struts >

< package name ="fileUploadDemo" extends ="struts-default" >

< action name ="fileUpload" class ="tutorial.FileUploadAction" >

< interceptor-ref name ="fileUploadStack" />

< result name ="success" > /ShowUpload.jsp

web.xml配置文件

< web-app id ="WebApp_9" version ="2.4"

xmlns ="https://www.wendangku.net/doc/9b14259186.html,/xml/ns/j2ee"

xmlns:xsi ="https://www.wendangku.net/doc/9b14259186.html,/2001/XMLSchema-instance"

xsi:schemaLocation ="https://www.wendangku.net/doc/9b14259186.html,/xml/ns/j2ee https://www.wendangku.net/doc/9b14259186.html,/xml/ns/j2ee/web-app_2_4.xsd" >

< display-name > Struts 2 Fileupload

< filter >

< filter-name > struts-cleanup

< filter-class >

org.apache.struts2.dispatcher.ActionContextCleanUp

< filter >

< filter-name > struts2

< filter-class >

org.apache.struts2.dispatcher.FilterDispatcher

< filter-mapping >

< filter-name > struts-cleanup

< url-pattern > /*

< filter-mapping >

< filter-name > struts2

< url-pattern > /*

< welcome-file-list >

< welcome-file > index.html

阻止用户上传非图片类型的文件

方法一:

修改FileUpload.jsp,在与之间加入“”,用于在页面上输出错误信息。

然后修改struts.xml文件,将Action fileUpload改为如下所示:

< action name ="fileUpload" class ="tutorial.FileUploadAction" >

< interceptor-ref name ="fileUpload" >

< param name ="allowedTypes" >

image/bmp,image/png,image/gif,image/jpeg

< interceptor-ref name ="defaultStack" />

< result name ="input" > /FileUpload.jsp

< result name ="success" > /ShowUpload.jsp

方法二:

BufferedImage imgBuffer = ImageIO.read(file);

if(null == imgBuffer) {

// 非图片,进行处理

}

阻止用户上传图片过大

方法一:配置fileupload拦截器的maximumSize参数(设定能接受的文件的最大长度)

< param name ="fileUpload.maximumSize" >

102400

方法二:在struts.xml文件中添加

(限制上传文件的最大长度)

关于将图片上传到项目

用ServletActionContext.getServletContext().getRealPath(str);来获取项目地址,其中str是项目下的相对路径

在eclipse 下上传图片到项目,即使上传成功也看不到,因为它被存储在一个临时目录下,你可以在你的项目文件下搜一下

只有打成var包发布后才能在项目中实际存储

未解决问题

一、不能实现在jsp中控制上传文件的大小

二、若JPEG图片的ICC信息被破坏了ImageIO会抛出异常bandOffsets.length is wrong!

欢迎大家提出问题,更欢迎大家解决上面两个问题

解决照片因大小无法上传的方案

解决照片因大小无法上传的方案 重要提示:进行下述操作时,请备份好原有的图片,以下的操作基本上不可恢复。 如果手边有一张标准的半身照如下(本例图片宽600像素,高800像素) 修改照片的步骤 ◆查看图片像素大小 ◆缩放到适当比例 ◆剪裁 ◆保存 ◆察看图片像素大小 依次点击Windows左下角

开始—>程序—>附件—>画图(系统不同,显示略有不同) 打开的画图程序如下

依次点击文件—>打开,选择并打开需要修改的图片

点击图像—>属性,察看一下图片的大小,本例的大小为宽600像素,高800像素。

图像属性中的宽度与高度(见上图)的数值大小将决定该图像的大小,数值越大,保存出的图像大小就越大;数值越小,保存出的图像大小就越小。 以下以将图像变小为例,按以下步骤进行操作(将图像变大的方法与变小的方法一致): 由于这张照片规格比上传要求的要大,并且是半身照,我们需要缩小并且剪裁照片,才能符合要求。首先需要计算照片需要缩小的比例, 点击图像—>拉伸/扭曲,在水平和垂直旁边的文本框里面输入相同的数字(这样图片才不会变形!),本例中经过尝试,选择了缩小比例为40%。 点击确定之后,如果输入的比例不合适,那么点击编辑—>撤销,重复上述步骤,直至调整到合适的比例。 先用鼠标点击画图左边工具栏第一行第二个,然后用鼠标在图片上划定范围。画图右下角显示了划定矩形的大小,当选定的大小恰好为160*210的时候,选择编辑—>复制,这样我们就把选中的内容复制了。 (下面的操作是在原图像上修改,一旦保存不可恢复)选择编辑—>粘贴,然后选择图像—>属性,宽和长分别填入160和210,点击文件—>保存,图片处

照片无法上传的处理办法

照片无法上传的解决方案 为了解决考生在网上报名过程中,因为照片的尺寸过大无法上传的问题,特写此说明。请有类似问题的考生参看说明,进行照片尺寸的修改,以便于成功上传照片。 方法一: 重要提示:进行下述操作时,请备份好原有的图片,以下的操作基本上不可恢复。 如果手边有一张标准的半身照如下(本例图片宽600像素,高800像素) 修改照片的步骤 查看图片像素大小

◆缩放到适当比例 ◆剪裁 ◆保存 ◆查看图片像素大小 依次点击Windows左下角 开始—>程序—>附件—>画图(系统不同,显示略有不同) 打开的画图程序如下

依次点击文件—>打开,选择并打开需要修改的图片 点击图像—>属性,查看图片的大小,本例的大小为宽

600像素,高800像素。 图像属性中的宽度与高度(见上图)的数值大小将决定该图像的大小,数值越大,保存出的图像就越大;数值越小,保存出的图像就越小。 以下以将图像变小为例,按以下步骤进行操作(将图像变大的方法与变小的方法一致):

由于这张照片规格比上传要求的要大,并且是半身照,我们需要缩小并且剪裁照片,才能符合要求。首先需要计算照片需要缩小的比例, 点击图像—>拉伸/扭曲,在水平和垂直旁边的文本框里面输入相同的数字(这样图片才不会变形!),本例中经过尝试,选择了缩小比例为40%。 点击确定之后,如果输入的比例不合适,那么点击编辑—>撤销,重复上述步骤,直至调整到合适的比例。 先用鼠标点击画图左边工具栏第一行第二个,然后用鼠标在图片上划定范围。画图右下角显示了划定矩形的大小,当选定的大小恰好为160*210的时候,选择编辑—>复制,这样我们就把选中的内容复制了。 (下面的操作是在原图像上修改,一旦保存不可恢复)选择编辑—>粘贴,然后选择图像—>属性,宽和长分别填入160和210,点击文件—>保存,图片处理完毕。

jsp上传图片方法

?博客园首页 如何在Jsp上传图片 作者:夏夏知来源:博客园发布时间:2012-03-28 11:43 阅读:246 次原文链接[收藏] 1. 新建一个Dynamic Web Project: 2. 键入工程名UploadImage: 3. 选择Dynamic web module version :2.5 4. 点击“Finish” 5. 新建两个jsp文件:ImageUpload.jsp和ImageUploadHandler.jsp

6. 新建一个类,专门用来处理图片上传 新建一个包mytest: 在包下新建一个类FileUpload: 代码内容: package mytest; import java.awt.image.BufferedImage; import java.io.*; import java.awt.Image; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class FileUpload { public static void uploadImage(String imgFolderPath,String srcFileName,String dstFileName) throws IOException

{ //判断文件夹image是否存在,若不存在则创建 File folder = new File(imgFolderPath); System.out.println("function 'uploadFileTest2'-imgFolderPath'"+imgFolderPath); if(!folder.exists()) { folder.mkdir(); System.out.println("maked a folder!"); } File _file = new File(srcFileName); //读入文件 Image src = javax.imageio.ImageIO.read(_file); //构造Image对象 int wideth=src.getWidth(null); //得到源图宽 int height=src.getHeight(null); //得到源图长 BufferedImage tag = new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(src,0,0,wideth,height,null); FileOutputStream out=new FileOutputStream(dstFileName); //输出到文件流 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(tag); //JPEG编码 out.close(); System.out.println("function 'uploadFileTest2'-status:A Image File Saved!"); } } 发现报错: 找到代码的库Libraries:

关于照片上传平台的操作方法

关于照片上传平台的操作方法 系统对照片格式的要求见新生建籍通知。注意:初中新生照片需要重新照,重新上传,不要小学时期的照片。 1、可利用平台客户端安装包中提供的照片免费处理软件“iseepro3915.zip”;利用这个照片处理软件处理采集到的照片,如批量修改照片文件名(为学籍号)、格式、大小等。文件夹中有使用说明;将处理好的照片,按年级拷贝到平台客户端相应年级目录的photos下。 2、使用客户端上传照片的方法 客户端可以实现批量上传照片。将学生的照片复制到photo目录下,并将照片的名称以学生的学籍号码命名,然后上传学生照片。对于上传到平台的照片,平台需要一段时间处理,请于第二天登陆平台查看照片信息。 3、通过平台上传照片 平台可以实现单个学生照片的上传。在学籍补录或者学生信息修改功能下选择该学生的照片进行上传。上传后可以接着看到学生的照片。 4、上传照片格式状态说明 (1)请求上传:是指只是请求平台进行上报操作,但还没有进行数据的上传。

(2)上传中:是指平台允许上报数据,并且已经在数据上传的过程中,这个过程根据上报数据文件大小、网络等情况而不同。 (3)上传结束:是指数据已经上报到平台,但是还没有进行处理,此时在平台上是查询不到、也看不到照片。 (4)业务处理中:是指数据已经在处理的过程中,此时在平台上也是查询不到、也看不到照片。 (5)业务处理成功:此时数据已经处理完毕,可以在平台上查询到照片。 (6)已确认数据:对于新生建籍上报,在业务处理成功后,需要进行确认才能够在正常业务操作中查询到。 5、上传完成后,等第二天可以在网络平台中看到照片了,要进行查漏,看看有没有没传上的照片,有的话在网络平台上单个传上即可。

学位证书照片上传操作方法

附件2 学位证书照片上传操作方法 学位申请人必须在校务管理系统中上传电子版学位证书照片,用于申请人学位授予信息上报和认证。 一、学位证书照片要求 图片尺寸(像素):宽150、高210。 大小:≤10K,格式:JPG。 成像区全部面积48mm×33mm;头部宽度21mm-24mm,头部长度28mm-33mm;下额到头顶25mm-35mm;像长35mmX45mm。 被摄人服装:白色或浅色系。 照片背景:单一蓝色。 电子照片必须用数码相机拍摄,免冠,头顶距离顶部约占照片高度的3/10。纸质相片为2寸免冠蓝底彩照1张,纸质相片需要与提交的电子版相片一致。 二、上传电子版学位证书照片操作方法 1. 2015年已参加学校组织的毕业照片统一采集的学历研究生(双证),无需上传学位照片,只需登陆校务管理系统(学位管理——下载答辩申请书——上传学位照片)核对照片即可。 2. 往年已参加学校组织的毕业照片统一采集的学历研究生(双证),登录学信网校对照片,并在校对后下载照片(如无法使用“另存为”功能,则请使用截图软件,如QQ

截图,把照片截图并保存到个人电脑上)——登录校务管理系统(学位管理——下载答辩申请书——上传学位照片)——点击“浏览”——选择在学信网下载存放的照片——确认无误——点击“上传”。 如系统提示照片规格有问题,请使用图片编辑软件根据要求进行调整,操作指南可登录“研究生院主页—学位工作—常见问答”查看。 3. 未参加学校组织的毕业照片统一采集的学历研究生(双证),请按照研究生院管理处关于毕业研究生电子注册相片采集工作的通知的要求,自行前往新华社广东图像采集中心采集点拍摄毕业照片,并将照片光盘带回并妥善保存。网上申请答辩时,登录校务管理系统(学位管理——下载答辩申请书——上传学位照片)——点击“浏览”——选择在光盘中的照片电子版——确认无误——点击“上传”。 如系统提示照片规格有问题,请使用图片编辑软件根据要求进行调整,操作指南可登录“研究生院主页—学位工作—常见问答”查看。 4. 在职攻读硕士学位学员(单证),前往中山大学数码文印中心采集学位照片,复制保存到移动磁盘(纸质版按照学院要求提交到学院)——登录校务系统(学位管理——下载答辩申请书——上传学位照片)——点击“浏览”——选择保存在移动磁盘的学位照片——确认无误——点击“上传”。

java实现图片或文件的上传功能具体思路及代码

java实现图片或文件的上传功能具体思路及代码 一、思路 现在不管是博客论坛还是企业办公,都离不开资源的共享。通过文件上传的方式,与大家同分享,从而达到大众间广泛的沟通和交流,我们既可以从中获得更多的知识和经验,也能通过他人的反馈达到自我改进和提升的目的。 下面我就为大家介绍web项目中的这一上传功能,那么文件是如何从本地发送到服务器的呢?看我慢慢道来: 首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。 然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理 详细代码如下:一个form将文件信息通过post方式传送到指定的servlet 二、代码 复制代码代码如下: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> "> My JSP 'upload.jsp' starting page

相关文档
相关文档 最新文档