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开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...
多文件上传功能则意味着用户可以一次性选择并上传多个文件,大大提高了数据传输的效率。 【详细实现】 1. **引入资源**:首先,你需要在HTML文件中引入Bootstrap和Bootstrap-fileinput的相关CSS和JS文件。这些文件...
在EXTJS中,`MultiFileUploadField` 是一个组件,它允许用户在单个操作中选择并上传多个文件,极大地提升了用户交互体验。这个功能对于处理大量文件上传的场景非常有用,比如在内容管理系统、图像库或者文件分享平台...
这个源码可能提供了一种实现方式,允许用户同时上传多个文件,并且带有进度条显示,用户可以随时停止或删除正在上传的文件。这样的功能提高了用户体验,因为它允许用户批量处理文件,而无需逐一操作。 在实现多文件...
基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 项目经过严格测试,确保可以运行! 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...
"JSP多文件上传"是一个常见的需求,特别是在文件分享、在线教育或文档管理等场景。这个功能允许用户一次性选择并上传多个文件,提高了用户体验,减少了多次点击和等待时间。 实现JSP多文件上传,我们需要了解以下几...
对于初学者来说,理解并实现多文件上传是一项重要的技能,它可以帮助你构建交互性强、功能完善的Web应用程序。在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键...
在多文件上传的场景中,JSP主要负责接收和处理来自客户端的文件上传请求。 在"MultifileUploadDemo"中,我们利用了Flash作为前端的上传组件。Flash因其支持多媒体和交互性而被广泛用于创建丰富的互联网应用程序。在...
在本项目中,"javascript+HTML5 多文件上传(插件)多进度条显示"是一个实现这一功能的实例,它允许用户选择并上传多个文件,并在上传过程中实时显示每个文件及整体的上传进度。下面将详细介绍这个技术实现的关键...
标题中的“Flash实现的多文件上传”指的是使用Adobe Flash技术来实现用户在Web页面上同时上传多个文件的功能。Flash在过去的网页开发中被广泛应用于多媒体交互和富互联网应用(RIA),其中包括文件上传功能,因为它...
这个功能通常在网页应用中用于让用户能够一次性上传多个文件,如图片、文档等,极大地提高了用户体验。 多文件上传通常涉及以下几个关键技术点: 1. **HTML5 File API**: 这是实现多文件上传的基础。File API允许...
多文件上传是指一次操作中上传多个文件的能力。这种功能常见于照片分享网站、文档管理应用等。实现多文件上传,通常有以下方法: 1. **HTML5 File API**:现代浏览器支持HTML5的File API,可以一次性选择并上传多个...
在IT行业中,多文件上传是一项常见的功能,尤其在网页应用和桌面软件中,它允许用户一次选择并上传多个文件,极大地提高了工作效率。本资源提供的是一款基于Eclipse开发的多文件上传组件,它可以帮助开发者轻松地...
在IT行业中,文件上传是网页应用中常见的功能之一,尤其在大数据时代,用户可能需要一次上传多个文件。"uploadify"是一款广泛使用的JavaScript插件,它使得多文件上传变得简单而高效。本示例代码是关于如何使用...
这里,我们主要关注"springMVC多文件上传需要的jar"这一资源,它包含了实现这一功能所必需的Java档案(JAR)文件。 首先,Spring MVC是Spring框架的一个模块,专门处理Web应用的请求和响应。它提供了模型-视图-控制...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用程序中,如用户需要上传图片、文档等附件。本示例提供了实现这一功能的具体代码和数据库相关资源,旨在帮助开发者快速构建自己的多文件上传功能。 首先,...
1. **多文件上传**:多文件上传是指用户可以在一次操作中选择并上传多个文件,而不是逐个上传。这提高了用户体验,减少了用户的交互次数。在HTML5中,`<input type="file" multiple>`标签被引入,使得浏览器支持多选...
在Web应用中,多文件上传功能通常用于让用户一次性上传多个文件,比如图片、文档等。ExtJS4提供了一种解决方案,允许用户通过一个交互式的界面来上传多个文件,并可以分别处理每个文件的上传状态。 **三、上传组件...
在现代Web应用中,用户可能需要一次性上传多个文件,例如图片、文档或视频。这个过程如果能实时显示每个文件的上传进度,将极大地提升用户体验。本文将深入探讨如何实现"多文件上传,并显示每一个的进度"这一功能,...