smartupload多文件上传

smartupload文件上传

上传页面upload----简单做个添加文件上传效果,点击即可添加上传文件框;使用EL表达式做视图层数据显示;使用正则表达式做个简单的页面验证;

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <LINK href="<%=path %>/css/admin.css" type="text/css" rel="stylesheet">
<script language="JavaScript">
<!--
function trim(str){
 return str.replace(/(^/s*)|(/s*$)/g, "");  
}
var a = 1;
function deleteRow(tableid){
  mytable=document.getElementById(tableid);
  if(mytable.rows.length >2){
   document.getElementById(tableid).deleteRow();
   a--;
  }else{
   alert("上传的附件不能空留!");
  }
}
function addRow(){
  mytable=document.getElementById("rows");
  r=mytable.insertRow();
  r.bgColor ="#ffffff";
  coll = r.insertCell();
  coll.innerHTML="<input type='file' name=/"secondremark"+a+"/" id=/"secondremark"+a+"/" size='45' contentEditable='false'/>";
  a++;
}
function addlinks(){
 var pictitle = document.getElementById('pictitle').value;
 if(trim(pictitle) == ''){
 alert('文件所属栏目不能为空!');
 return false;
 }
 var attmentname = document.getElementById('attmentname').value;
 if(trim(attmentname) == ''){
 alert('文件标题不能为空!');
 return false;
 }
 var attremark = document.getElementById('attremark').value;
 if(trim(attremark) == ''){
 alert('文件说明不能为空!');
 return false;
 }
 for(i=1;i<a;i++){
 var photoStr = document.getElementById('secondremark'+i).value;
 if(photoStr != ''){
 var photoEx = photoStr.substring(photoStr.lastIndexOf(".")).toUpperCase();
 if(photoEx != ".TXT" && photoEx != ".DOC" && photoEx != ".HTML" && photoEx != ".XML" && photoEx != ".XLS" && photoEx != ".PSD" && photoEx != ".JPG"){
    alert('第'+i+'个附件文件格式不支持');
    return false;
 }
 }else{
  alert('上传文件不能为空');
    return false;
 }
}
 addform.submit();
}
//-->
</script>
  </head>
 
  <body>
 <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0>
   <TR height=28>
   
   </TR>
   <TR>
     <TD bgColor=#b1ceef height=1></TD>
   </TR>
   <TR height=20>
     <TD background=/images/shadow_bg.jpg></TD>
   </TR>
 </TABLE>
 <table width="100%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="EFF7FF">
   <form name="addform" method="post" action="<%=path %>/back/AddAttachmentsServlet" enctype="multipart/form-data">
   <tr>
     <td width="10%" height="30" bgcolor="EFF7FF" colspan="2" align="center">添加附件</td>
   </tr>
   <tr>
       <td width="10%" height="30" bgcolor="#FFFFFF" align="center">附件所属</td>
       <td bgcolor="#FFFFFF">
       <select name="pictitle" id="pictitle">
       <c:forEach var="listpictitle" items="${listpictitle}">
         <option value="${listpictitle}">${listpictitle}</option>
       </c:forEach>
    </select>  
       </td>
     </tr> 
     <tr>
       <td width="10%" height="30" bgcolor="#FFFFFF" align="center">附件标题</td>
       <td bgcolor="#FFFFFF">
       <input type="text" name="attmentname" id="attmentname" size="30" maxlength="30">
       </td>
     </tr> 
     <tr>
       <td width="10%" height="30" bgcolor="#FFFFFF" align="center">附件说明</td>
       <td bgcolor="#FFFFFF">
          <input type="text" name="attremark" id="attremark" size="30" maxlength="30">
      </td>
     </tr>
     <td width="10%" height="30" bgcolor="#FFFFFF" align="center">附件上传</td>
     <td>
     <table id="rows">
      <TR>
               <TD align=right bgColor=#ffffff colSpan=8>
               <font color="#CCCCCC">请选择正确的文件格式:txt,doc,html,xml,xls,psd不区分大小写</font>
               <A οnclick=addRow() href="javascript:void">+ 增加</A>
              <A onClick="deleteRow('rows')" href="javascript:void">- 删除</A></TD>
            </TR>
     </table>
     </td>
     <tr style="display:none">
       <td width="10%" height="30" bgcolor="#FFFFFF" align="center">附件备用</td>
       <td bgcolor="#FFFFFF">
          <input type="text" name="thirdremark" id="thirdremark" size="30" maxlength="30">
      </td>
     </tr> 
     <tr>
       <td width="10%" height="30" bgcolor="#FFFFFF" colspan="2" align="center">
        <input type="button" value="增 加" height=18 width=100 οnclick="addlinks();">
        <input type="reset" name="Submit2" value="重 置">
       </td>
     </tr>
   </form>
 </table>
  </body>
</html>

 

数据直接通过Servlet处理后进行跳转,中间各个环节不一一作解;值得一提的有两点:

其一获取页面传过来的数据过程中,JSP内的request对象机制不起作用,被导入smartUpload中的request所覆盖,

当然也可以不引用该类的request,通过jsp内置对象request获取页面穿过来的数据,不过这样文件也就上传不了,那就等于没意义;

其二获取页面数据等一系列操作一定要置于smartUpload.upload()方法执行之后,否则获取不到页面传过来的

参数或数据,具体原因请看smartUpload.jar源代码,SmartUpload该类实体化后,也不能获取到该类中的属性和和方法执行后的返回值,必须smartUpload.upload()之后再来获取;

package com.jetsum.back.attachment;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;

import com.jetsum.back.bean.Attachments;
import com.jetsum.back.bean.PicUpload;
import com.jetsum.back.dao.AttachmentsDao;
import com.jspsmart.upload.File;
import com.jspsmart.upload.Request;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;

public class AddAttachmentsServlet extends HttpServlet {
 public void destroy() {
  super.destroy();
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  this.doPost(request, response);
 }

 /*
  * (non-Javadoc)
  *
  * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
  *      javax.servlet.http.HttpServletResponse)
  */
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  PicUpload picupload = new PicUpload();
  Attachments attachments = null;
  AttachmentsDao attachmentsDao = new AttachmentsDao();

  SmartUpload smartUpload = new SmartUpload();
  Request myrequest = smartUpload.getRequest();
  // 设置文件大小(50M)
  smartUpload.setMaxFileSize(1024 * 1024 * 1024 * 50); // 文件格式
  // smartUpload.setAllowedFilesList("txt,doc,html,xml,psd,xls,jpg");
  PageContext pageContext = JspFactory
    .getDefaultFactory()
    .getPageContext(this, request, response, null, true, 8192, true);
  smartUpload.initialize(pageContext);
  String failResult = "";
  try {
   smartUpload.upload();
  } catch (SmartUploadException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  String filePath = request.getSession().getServletContext()
  .getRealPath("/upload");
  
  String pictitle = myrequest.getParameter("pictitle");
  String attmentname = myrequest.getParameter("attmentname");
  String attremark = myrequest.getParameter("attremark");
  String thirdremark = myrequest.getParameter("thirdremark");
  
  boolean result = false;
  for (int i = 0; i < smartUpload.getFiles().getCount(); i++) {
   File file = smartUpload.getFiles().getFile(i);
   String myfile = file.getFileName();
   System.out.println(myfile);
   if (myfile != null && !myfile.equals("")) {
    try {
     file.saveAs(filePath + "/" + myfile);
    } catch (SmartUploadException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    System.out.println("上传终了: " + myfile);
   }
   attachments = new Attachments();
   picupload = attachmentsDao.searchAttmentfByTitle(pictitle);
   int attmentfk = picupload.getPictureid();
   attachments.setAttmentfk(attmentfk);
   attachments.setAttmentname(attmentname);
   attachments.setAttremark(attremark);
   attachments.setSecondremark(myfile);
   attachments.setThirdremark(thirdremark);
   result = attachmentsDao.addAttachments(attachments);
  }

  if (result) {
   request.getRequestDispatcher("/back/ShowUploadServlet").forward(
     request, response);
  } else {
   request.getRequestDispatcher(
     "../WEB-INF/back/attachments/attachmentupload.jsp")
     .forward(request, response);
  }
 }

 public void init() throws ServletException {
 }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值