struts2上传图片的全过程 自己版

function toAdd() {
		if(befoSubmit()) {
			$.ajax({
				cache :  true,
				type : "POST",
				url : "<%=basePath%>check/addCheckWineInfoOK",
				data : $("#addForm").serialize(),
				error : function(request) {
					$("#errorMsg").show();
				},
				success : function(data) {
					if(data) {
						$("#okMsg").show();
						setTimeout(function(){$("#okMsg").hide();}, 4000);
					} else {
						$("errorMsg").show();
					}
				}
			});
		}
	}
	<s:form id="addForm" action="check/addCheckWineInfoOK" method="post" enctype="multipart/form-data" theme="simple" >
							<fieldset>
								<div style="float: left;">
									<table>
										<tr>
											<td><b><label>产品批次号</label></b></td>
											<td><s:select list="#{‘C123‘:‘C123‘,‘C456‘:‘C456‘,‘C789‘:‘C789‘}" name="checkWine.productId" cssClass="large-input" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>葡萄酒检测时间</label></b></td>
											<td><input name="dateStr" type="text" readonly="readonly" value="单击此处选择时间" id="rangeA" onclick="changeDate(this.value);"/></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>检测人</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.checkPerson" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>感官</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.feel" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>净含量(ml)</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.content" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>酒精度(%vol)</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.alc" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>总糖(g/l)</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.total_sugar" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>挥发酸(g/l)</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.acidDegree" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>总SO2(mg/l)</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.totalSO2" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>干浸物(g/l)</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.solidDegree" /></td>
											<td></td>
										</tr>
										<tr>
											<td><b><label>备注</label></b></td>
											<td><input class="text-input large-input datepicker" type="text" id="large-input" name="checkWine.other" /></td>
											<td></td>
										</tr>
										<tr>
                  				   			<td style="text-align: right; width: 120px;font-size: 15px;font-weight: bold;">上传质检报告:</td>
                    						<td id="more">   <s:file name="file"></s:file> <input type="button" value="继续添加" onclick="addMore();"> </td>
										</tr>
										<tr>
											<td><input class="button" type="submit" value="确认添加"/></td>
										</tr>
									</table>
								</div>
							</fieldset>
							<div class="clear"></div>
						</s:form>

如上 jsp ;

配置文件如下:

<action name="addCheckWineInfoOK" class="addCheckWineInfoAction">
			<interceptor-ref name="fileUpload">
                <!-- 设置文件上传大小 -->
                <param name="maximumSize">4096000</param>
                <!-- 设置文件上传类型 -->
                <param name="allowedTypes">
                    application/vnd.ms-powerpoint
                </param>
            </interceptor-ref>
            <!-- 自定义了拦截器后必手动定义默认的拦截器,否则默认的拦截器不会被执行 -->
             <interceptor-ref name="defaultStack"></interceptor-ref> 
			<!-- <result name="success" type="json">
				<param name="root">result</param>
			</result> -->
			<result name="success" type="redirectAction">
				toSelectAllCheckWineInfo
			</result>
		</action>
package com.jsjxy.wine.action.check.wine;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;

import com.jsjxy.wine.action.BaseAction;
import com.jsjxy.wine.bean.pojo.CheckWine;
import com.jsjxy.wine.service.dao.base.DAOException;
import com.jsjxy.wine.utils.CreateDateUtil;

@Controller
@Scope("prototype")
@Transactional
public class AddCheckWineInfoAction extends BaseAction {
	private String dateStr;// 用于接收页面提交过来的时间字符串
    
    private List<File> file;
    private List<String> fileFileName;
    private List<String> fileContentType;
    private List<String> dataUrl;
	private CheckWine checkWine;
	@Override
	public String execute() {
		try {
			System.out.println("file------"+file);
			HttpServletRequest request= ServletActionContext.getRequest();
			String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
			if (file != null) {

				dataUrl = new ArrayList<String>();
		        String imgpath = "upload\\";
		        for (int i = 0; i < file.size(); ++i) {
		            InputStream is = new FileInputStream(file.get(i));
		            String path = ServletActionContext.getServletContext().getRealPath("/");
		            System.out.println("path ----------------------"+path);
		            String fileName = Long.toString(System.currentTimeMillis()) + this.getFileFileName().get(i);
		            File destFile = new File(path+imgpath, fileName);
		            System.out.println("数据库url------"+basePath+imgpath+fileName);
		            dataUrl.add(basePath+imgpath+fileName);
		            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();
		        }
		        
		        String finalUrl = "";
		        for (String Iurl : dataUrl) {
		        	finalUrl = finalUrl + Iurl+";";
				}
		        checkWine.setImageUrl(finalUrl);
			}
			checkWine.setCheckWineTime(CreateDateUtil.getTimeStart(dateStr));
			checkWineDAO.addCheckWineInfo(checkWine);
			result = true;
		} catch (DAOException e) {
			e.printStackTrace();
			result = false;
		} catch (ParseException e) {
			e.printStackTrace();
			result = false;
		}catch (Exception e) {
			e.printStackTrace();
		}
		return super.execute();
	}
	public String getDateStr() {
		return dateStr;
	}
	public void setDateStr(String dateStr) {
		this.dateStr = dateStr;
	}
	public List<File> getFile() {
		return file;
	}
	public void setFile(List<File> file) {
		this.file = file;
	}
	public List<String> getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(List<String> fileFileName) {
		this.fileFileName = fileFileName;
	}
	public List<String> getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(List<String> fileContentType) {
		this.fileContentType = fileContentType;
	}
	public List<String> getDataUrl() {
		return dataUrl;
	}
	public void setDataUrl(List<String> dataUrl) {
		this.dataUrl = dataUrl;
	}
	public CheckWine getCheckWine() {
		return checkWine;
	}
	public void setCheckWine(CheckWine checkWine) {
		this.checkWine = checkWine;
	}

}

如上是上传过程

<s:iterator value="urls" id="imageUrl">
										<tr><td><img src="${imageUrl}" width="800px;" height="500px;"> </td></tr>
									</s:iterator>

如上是图片显示过程

时间: 2024-10-05 10:17:47

struts2上传图片的全过程 自己版的相关文章

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&q

Java Web框架-----------------------struts2(官网教程版HelloWorld)

Java Web框架------------------struts2(官网教程版HelloWorld) 我们都知道Struts是Java Web 常用的三大框架之一,另外还有Spring.Hibernate.学习Struts很有必 要!那么怎么学习呢?我的建议是: 1.对于英语能力还可以的人,学技术我们要从官网文档学起,再结合中文别人所写的论文.博客,视频 等.这样可以达到事半功倍的效果. 2.对于阅读英语稍微吃力的人,我们可以下载有道词典,再来本计算机专业英语书,不懂就查,但是, 我们决不能

struts2上传图片超过大小给出错误提示

struts2上传图片超过大小给出错误提示 今天碰到上传图片太大,上传不上去返回input视图的界面,回显的错误信息却是乱码,整了好久才整出来,在这里做个记录,方便自己以后查阅,也希望能给遇到这种情况的朋友点指示,呵呵!           首先,在struts.xml里新增的配置,     <!--  指定显示的错误信息的编码格式,注意这个编码应该跟你的回显的页面的格式是一致的  -->     <constant name="struts.i18n.encoding&quo

Java SSH 项目总结——Struts2上传图片组

前言 在一个表单中上传5张图片分别隶属于5类别,在Strust2表单中赋予file控件的name属性一样,实现多张图片与该图片隶属的类别信息进行提交,后台获取上传文件的数组信息,然后将图片和类别信息进行保存,完成图片上传的功能. 正文 前台页面 前台代码 </pre><pre name="code" class="html"><s:form id="fileForm" name="fileForm"

一个简单的struts2上传图片的例子

说到上传图片,最近在赶一个项目,也遇到了要上传头像的难题,在网上搜了好久,都没有找到满意的答案.于是又选择了最原始的上传图片的方法,在此做个记录,谨作备忘之用. 首先是添加页面add_UI.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <%@include file="/common/heade

struts2——上传图片格式

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@taglib uri="/struts-tags" prefix="s"%> 4 <!DOCTYPE html> 5 <html> 6 <head> 7 &l

struts2上传图片

在WEB-INF下新建一个content目录,建立一个upload.jsp 1 <%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> 2 <%@taglib prefix="s" uri="/struts-tags"%> 3 <!DOCTYPE html PUBLIC &q

Struts2上传图片后缀名变为.tmp

问题描述:在post请求时,图片以File的格式传入后台,保存时变成.tmp格式文件. 解决方案: private File UserFile; private String UserFileFileName; private String UserFileContentType; public String getUserFileFileName() { return UserFileFileName; } public void setUserFileFileName(String user

Hive的安装部署全过程详细版

首先先简单介绍下hive: Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并可以使用类似SQL的方式来对数据文件进行读写以及管理.这套Hive SQL 简称HQL.Hive的执行引擎可以是MR.Spark.Tez. 核心架构:   Hive官网地址 http://hive.apache.org/ 下载地址 http://archive.apache.org/dist/hive/ hive的安装部署 Hive常用的安装分三种 (注意:Hive会自动监测Had