`
weiweichen1985
  • 浏览: 141012 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

多文件上传

阅读更多
replyemail.jsp
<%@ page language="java" pageEncoding="gbk"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="/WEB-INF/app.tld" prefix="app"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
		<title>无标题文档</title>

		<script language="javascript" type="text/javascript">
	
	var count=2;

	function  addfujian(){
	
                            if(count>6){
			window.alert("最多只能上传6个附件");
			return;
		}
		var tb=document.getElementById("tbody");
		var newTR=document.createElement("tr");
		var td1=document.createElement("td");
		td1.setAttribute("align","center");
		td1.setAttribute("innerText","附件"+count+":");
		
		var td2=document.createElement("td");
		td2.setAttribute("align","left");
		var inputFile=document.createElement("input");		
		inputFile.setAttribute("type","file");
		inputFile.setAttribute("name","attachment["+(count-1)+"].file");
		inputFile.setAttribute("class","input_button");
		//window.alert(inputFile.name);
		td2.appendChild(inputFile);
		
		//删除按钮
		var delBtn=document.createElement("input");
		delBtn.setAttribute("type","button");
		delBtn.setAttribute("value","删除");
		delBtn.onclick=function(){
		    tb.removeChild(event.srcElement.parentElement.parentElement);
		    count--;
		}
		td2.appendChild(delBtn);

		newTR.appendChild(td1);
		newTR.appendChild(td2);
		tb.appendChild(newTR);	
		count++;
	}
	
	 function saveit() {
	 	onlineEditor.save();
	 
		var theform=document.forms[0];
		if(check()) {
	  		theform.submit();
	  	}
	  	return false;
	}
	
	function $(id){
		return document.getElementById(id);	
	}
	
	function check(){
		var regEmail=/[\w\.\_]+[@]{1}[\w]+[.]{1}[\w]+/;
		
		var receiveEmail=document.getElementsByName("receiveEmail")[0].value;
		var span_receiveEmail=$("span_receiveEmail");
		if(!regEmail.test(receiveEmail)){
			span_receiveEmail.innerHTML="收件人邮箱格式错误!";
			span_receiveEmail.className="STYLE1";
			return false;
		}
		else{
		    if(!document.getElementsByName("receiveEmail")[0].readOnly){
				span_receiveEmail.innerHTML="输入正确!";
				span_receiveEmail.className="STYLE2";
			}
		}
		 
		return true;
	}
	
	function focuss(){
		var span_receiveEmail=$("span_receiveEmail");
		span_receiveEmail.innerHTML="请输入收件人邮箱地址!";
		span_receiveEmail.className="STYLE2";
		
	}
	
	
	
	
</script>

		<script language="javascript" type="text/javascript"
			src="js/validator.js"></script>
		<link href="css/style.css" rel="stylesheet" type="text/css" />
		<style type="text/css">
<!--
.STYLE1 {color: #FF0000}
.STYLE2 {color: blue}
-->
</style>
	</head>

	<body>
		<div>
			<html:messages id="m" name="msg" property="nullreceiveEmail">${m}</html:messages>
			<html:messages id="m" name="msg" property="errorreceiveEmail">${m}</html:messages>
			<html:messages id="m" name="msg" property="nullcontents">${m}</html:messages>
			<html:messages id="m" name="msg" property="contentsOverLength">${m}</html:messages>
		</div>
		<c:set value="${param.s}" var="ss"></c:set>
		<form action="/LhCard/GeRen/mEmailQueue.do?method=sendEmail"
			enctype="multipart/form-data" method="post"
			onsubmit="return saveit();" name="upload_form">
			<table width="100%" border="0" cellpadding="0" cellspacing="1"
				id="tb">
				<tbody id="tbody">
					<tr>
						<td colspan="2" class="td_left">
							<input type="submit" class="input_button" value="发送" />
							<input type="button" class="input_button" value="添加附件"
								onclick="addfujian()" />
							<span class="STYLE1">最多只能上传6个附件,大小不超过10MB</span>
						</td>
					</tr>
					<tr style="display: none">
						<td>
							发件人:
						</td>
						<td>
							<input name="sendEmail" type="text" class="text"
								onfocus="this.className='bor'" onblur="this.className='text'"
								size="31" value="${sessionScope.user.email }" />
						</td>
					</tr>
					<tr>
						<td>
							收件人:
						</td>
						<td class="td_left">
							<logic:notEqual value="send" name="ss">
								<input name="receiveEmail" type="text" class="text"
									id="receiveEmail" size="31" value="${requestScope.mEmailQueueForm.receiveEmail}"
									readonly="readonly" />
								<span class="STYLE1" id="span_receiveEmail"></span>
							</logic:notEqual>
							<logic:equal value="send" name="ss">
								<input name="receiveEmail" type="text" class="text"
									id="receiveEmail" onfocus="this.className='bor';focuss();"
									size="31" maxlength="40"
									onblur="this.className='text';check();"
									value="${requestScope.mEmailQueueForm.receiveEmail}" />
								<span class="STYLE1" id="span_receiveEmail"></span>
							</logic:equal>

						</td>
					</tr>
					<tr>
						<td>
							主题:
						</td>
						<td class="td_left">
							<input name="title" type="text" class="text"
								onfocus="this.className='bor'" onblur="this.className='text'"
								size="31" maxlength="40"
								value="${requestScope.mEmailQueueForm.title}" />
							<span class="STYLE1" id="span_title"></span>
						</td>
					</tr>
					<tr>
						<td>
							附件:
						</td>
						<td class="td_left">
							<input name="attachment[0].file" type="file" class="text" />
						</td>
					</tr>

				</tbody>
			</table>
			<textarea name="contents" style="display:none">${requestScope.mEmailQueueForm.contents }</textarea>
			<iframe src="editarea/html/htmleditor.html" id="onlineEditor"
				width="100%" height="408"></iframe>

			<logic:equal value="send" name="ss">
				<input type="hidden" name="type" value="00" />
			</logic:equal>
			<logic:notEqual value="send" name="ss">
				<input type="hidden" name="type" value="${ss}" />
			</logic:notEqual>

		</form>
	</body>
</html>


UploadFile.java
package com.lhcard.entity;

import org.apache.struts.upload.FormFile;

public class UploadFile {
	private FormFile file;

	public FormFile getFile() {
		return file;
	}

	public void setFile(FormFile file) {
		this.file = file;
	}

}


MEmailQueueForm.java
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.lhcard.struts.form;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

import com.lhcard.entity.UploadFile;

/**
 * MyEclipse Struts Creation date: 04-18-2008
 * 
 * XDoclet definition:
 * 
 * @struts.form name="mEmailQueueForm"
 */
public class MEmailQueueForm extends BaseForm {
	/*
	 * Generated Methods
	 */

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Method validate
	 * 
	 * @param mapping
	 * @param request
	 * @return ActionErrors
	 */
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * Method reset
	 * 
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}

	private List<UploadFile> myFiles = new ArrayList<UploadFile>();

	public MEmailQueueForm() {
		// 为了能够在页面初始显示一个file
		myFiles.add(new UploadFile());
	}

	private Integer id;

	private String receiveEmail;

	private String sendEmail;

	private String title;

	private String contents;

	private String operator;

	private Date addDate;

	private String sendName;

	// 标记是发送(00)还是回复(非00)
	private String type;

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public Date getAddDate() {
		return addDate;
	}

	public void setAddDate(Date addDate) {
		this.addDate = addDate;
	}

	public String getOperator() {
		return operator;
	}

	public void setOperator(String operator) {
		this.operator = operator;
	}

	public String getContents() {
		return contents;
	}

	public void setContents(String contents) {
		this.contents = contents;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getReceiveEmail() {
		return receiveEmail;
	}

	public void setReceiveEmail(String receiveEmail) {
		this.receiveEmail = receiveEmail;
	}

	public String getSendEmail() {
		return sendEmail;
	}

	public void setSendEmail(String sendEmail) {
		this.sendEmail = sendEmail;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getSendName() {
		return sendName;
	}

	public void setSendName(String sendName) {
		this.sendName = sendName;
	}

	public List<UploadFile> getMyFiles() {
		return myFiles;
	}

	public void setMyFiles(List<UploadFile> myFiles) {
		this.myFiles = myFiles;
	}

	// 注意这个方法的定义
	public UploadFile getAttachment(int index) {
		System.out.println("in the getAttachment method====" + index + ">>>>>");
		int size = myFiles.size();
		if (index > size) {
			for (int i = size - 1; i < index; i++) {
				myFiles.add(new UploadFile());
			}
		} else if (index > size - 1) {
			myFiles.add(new UploadFile());
		}
		return (UploadFile) myFiles.get(index);
	}

}


MEmailQueueAction.java

public ActionForward sendEmail(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {

		HttpSession session = request.getSession();
		Object obj = session.getAttribute("user");
		OUsers ousers = (OUsers)session.getAttribute("YunYingUser");
		if (obj == null && ousers == null){
				return mapping.findForward("globalLogin");
		}
		MEmailQueueForm frm = (MEmailQueueForm) form;
		ActionForward af = this.checkForm(mapping, frm, request);
		if (af != null)
			return af;

		UHoldCard user = (UHoldCard) obj;
		if (user == null) {
			user = new UHoldCard();
		}
		if (ousers != null) {
			user.setName(ousers.getUserName());
		}
		String strResult = memailqueueDao.saveWithattachment(frm, user,
				this.servlet.getServletContext().getRealPath("/"));
		ActionMessages messages = new ActionMessages();
		if ("00".equals(strResult)) {
			com.lhcard.common.ForwardOperation.putinfo(session, "邮件发送成功",
					"/LhCard/GeRen/mEmailQueue.do?method=loginornot", "返回");

			return mapping.findForward("success");
		} else if ("01".equals(strResult)) {
			messages.add("oversize", new ActionMessage(
					"geren.replyemail.error.oversize"));
			request.setAttribute("msg", messages);
			return mapping.findForward("replyemail");
		} else if ("02".equals(strResult)) {
			com.lhcard.common.ForwardOperation.putinfo(session,
					"邮件发送成功,您上传的附件中包含exe文件,为了系统的安全已自动过滤掉",
					"/LhCard/GeRen/mEmailQueue.do?method=loginornot", "返回");

			return mapping.findForward("success");
		} else if ("03".equals(strResult)) {
			com.lhcard.common.ForwardOperation.putinfo(session, "邮件发送失败",
					"../GeRen/replyemail.jsp", "重新发送邮件");
			return mapping.findForward("fail");
		}
		return null;
	}


MEmailQueueDAO.java
	/**
	 * 保存邮件内容及附件
	 * 
	 * @author 陈伟
	 * @date 2008-4-18
	 * @param instance
	 * @param config
	 * @param request
	 * @param response
	 * @return String
	 *         <p>
	 *         "00":正常执行
	 *         <p>
	 *         "01":大小超过限制
	 *         <p>
	 *         "02":附件中有exe文件(系统自动屏蔽掉)
	 *         <p>
	 *         "03":出现错误
	 */
	public String saveWithattachment(MEmailQueueForm frm, UHoldCard user,
			String context) {
		log.debug("saving MEmailQuseue instance");

		Session ses = null;
		Transaction tran = null;
		int hasExe = 0; // 附件中是否有exe文件
		try {
			ses = this.getSession();
			tran = ses.beginTransaction();

			MEmailQueue instance = new MEmailQueue();
			instance.setSendEmail(frm.getSendEmail());
			instance.setReceiveEmail(frm.getReceiveEmail());
			if (frm.getTitle() == null || "".equals(frm.getTitle())) {
				instance.setTitle("来自" + frm.getSendEmail() + "的邮件");
			} else
				instance.setTitle(frm.getTitle());
			instance.setContents(frm.getContents());
			instance.setAddDate(DateTime.switchStringToDate1(DateTime
					.getCurrentDate5()));
			instance.setOperator(user.getName());
			instance.setSendName(user.getName());
			// if (frm.getReceiveEmail() != null)
			ses.save(instance); // 保存网外邮件队列表

			List myFiles = frm.getMyFiles();
			java.io.InputStream is = null;
			java.io.OutputStream os = null;
			StringBuffer filename = new StringBuffer("");

			if (myFiles != null && myFiles.size() > 0) {

				int sizeCount = 0;
				for (int i = 0; i < myFiles.size(); i++) {
					UploadFile uploadFile = (UploadFile) myFiles.get(i);
					FormFile formfile = uploadFile.getFile();
					if (formfile != null && formfile.getFileSize() > 0) {
						sizeCount += formfile.getFileSize();
					}
				}

				if (sizeCount > 10000000) { // 大小超过限制10MB
					return "01";
				}

				for (int i = 0; i < myFiles.size(); i++) {
					filename = new StringBuffer("");
					UploadFile uploadFile = (UploadFile) myFiles.get(i);
					FormFile formfile = uploadFile.getFile();
					if (formfile != null && formfile.getFileSize() > 0) {
						try {
							is = formfile.getInputStream();

							String[] arr = formfile.getFileName().split("\\.");
							String ext = "";
							if (arr.length > 1)
								ext = arr[1];
							if (!"exe".equals(ext)) { // 附件格式后缀不是exe的
								filename.append(new MD5().toMD5(formfile
										.getFileName()
										+ DateTime.getCurrentDate5())
										+ "." + ext);
								os = new FileOutputStream(context
										+ "/GeRen/upload/" + filename);

								byte[] bytes = new byte[8192];
								while ((is.read(bytes, 0, 8192)) != -1) {
									os.write(bytes, 0, 8192);
								}

								MAttachment attachment = new MAttachment();
								attachment.setMHistoryEmail(null);
								attachment.setMEmailList(null);
								// instance.getMAttachments().add(attachment);
								attachment.setMEmailQueue(instance);
								attachment.setTitle("");
								attachment.setAttachmentUrl("/GeRen/upload/"
										+ filename);
								System.out
										.println(("文件长度====" + "/GeRen/upload/" + filename)
												.length());
								ses.save(attachment);
							} else { // 附件格式后缀是exe的
								hasExe++;
							}
						} catch (FileNotFoundException e) {
							e.printStackTrace();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}

				if (os != null)
					try {
						os.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				if (is != null)
					try {
						is.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
			}
			tran.commit();
		} catch (RuntimeException re) {
			re.printStackTrace();
			if (tran != null)
				tran.rollback();
			return "03";
		}
		if (hasExe != 0)
			return "02";
		return "00";
	}
分享到:
评论

相关推荐

    java多文件上传实现

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...

    多文件上传和展示

    多文件上传功能则意味着用户可以一次性选择并上传多个文件,大大提高了数据传输的效率。 【详细实现】 1. **引入资源**:首先,你需要在HTML文件中引入Bootstrap和Bootstrap-fileinput的相关CSS和JS文件。这些文件...

    EXTJS 多文件上传

    在EXTJS中,`MultiFileUploadField` 是一个组件,它允许用户在单个操作中选择并上传多个文件,极大地提升了用户交互体验。这个功能对于处理大量文件上传的场景非常有用,比如在内容管理系统、图像库或者文件分享平台...

    多文件上传 源码

    这个源码可能提供了一种实现方式,允许用户同时上传多个文件,并且带有进度条显示,用户可以随时停止或删除正在上传的文件。这样的功能提高了用户体验,因为它允许用户批量处理文件,而无需逐一操作。 在实现多文件...

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 项目经过严格测试,确保可以运行! 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...

    JSP多文件上传(同时上传)

    "JSP多文件上传"是一个常见的需求,特别是在文件分享、在线教育或文档管理等场景。这个功能允许用户一次性选择并上传多个文件,提高了用户体验,减少了多次点击和等待时间。 实现JSP多文件上传,我们需要了解以下几...

    C# .NET FileUpload 多文件上传例子

    对于初学者来说,理解并实现多文件上传是一项重要的技能,它可以帮助你构建交互性强、功能完善的Web应用程序。在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键...

    JSP同时选择多文件上传MultifileUploadDemo

    在多文件上传的场景中,JSP主要负责接收和处理来自客户端的文件上传请求。 在"MultifileUploadDemo"中,我们利用了Flash作为前端的上传组件。Flash因其支持多媒体和交互性而被广泛用于创建丰富的互联网应用程序。在...

    javascript+HTML5 多文件上传(插件)多进度条显示

    在本项目中,"javascript+HTML5 多文件上传(插件)多进度条显示"是一个实现这一功能的实例,它允许用户选择并上传多个文件,并在上传过程中实时显示每个文件及整体的上传进度。下面将详细介绍这个技术实现的关键...

    flash 实现的多文件上传

    标题中的“Flash实现的多文件上传”指的是使用Adobe Flash技术来实现用户在Web页面上同时上传多个文件的功能。Flash在过去的网页开发中被广泛应用于多媒体交互和富互联网应用(RIA),其中包括文件上传功能,因为它...

    Ext3.0实现多文件上传.rar

    这个功能通常在网页应用中用于让用户能够一次性上传多个文件,如图片、文档等,极大地提高了用户体验。 多文件上传通常涉及以下几个关键技术点: 1. **HTML5 File API**: 这是实现多文件上传的基础。File API允许...

    大文件上传,和多文件上传

    多文件上传是指一次操作中上传多个文件的能力。这种功能常见于照片分享网站、文档管理应用等。实现多文件上传,通常有以下方法: 1. **HTML5 File API**:现代浏览器支持HTML5的File API,可以一次性选择并上传多个...

    多文件上传--多文件上传组件

    在IT行业中,多文件上传是一项常见的功能,尤其在网页应用和桌面软件中,它允许用户一次选择并上传多个文件,极大地提高了工作效率。本资源提供的是一款基于Eclipse开发的多文件上传组件,它可以帮助开发者轻松地...

    uploadify多文件上传例子代码

    在IT行业中,文件上传是网页应用中常见的功能之一,尤其在大数据时代,用户可能需要一次上传多个文件。"uploadify"是一款广泛使用的JavaScript插件,它使得多文件上传变得简单而高效。本示例代码是关于如何使用...

    springMVC实现多文件上传需要的jar

    这里,我们主要关注"springMVC多文件上传需要的jar"这一资源,它包含了实现这一功能所必需的Java档案(JAR)文件。 首先,Spring MVC是Spring框架的一个模块,专门处理Web应用的请求和响应。它提供了模型-视图-控制...

    java多文件上传

    在Java开发中,多文件上传是一项常见的功能,尤其在Web应用程序中,如用户需要上传图片、文档等附件。本示例提供了实现这一功能的具体代码和数据库相关资源,旨在帮助开发者快速构建自己的多文件上传功能。 首先,...

    异步提交多文件上传

    1. **多文件上传**:多文件上传是指用户可以在一次操作中选择并上传多个文件,而不是逐个上传。这提高了用户体验,减少了用户的交互次数。在HTML5中,`&lt;input type="file" multiple&gt;`标签被引入,使得浏览器支持多选...

    ExtJS4多文件上传,带进度条及管理

    在Web应用中,多文件上传功能通常用于让用户一次性上传多个文件,比如图片、文档等。ExtJS4提供了一种解决方案,允许用户通过一个交互式的界面来上传多个文件,并可以分别处理每个文件的上传状态。 **三、上传组件...

    多文件上传,并显示每一个的进度

    在现代Web应用中,用户可能需要一次性上传多个文件,例如图片、文档或视频。这个过程如果能实时显示每个文件的上传进度,将极大地提升用户体验。本文将深入探讨如何实现"多文件上传,并显示每一个的进度"这一功能,...

Global site tag (gtag.js) - Google Analytics