多附件的上传下载--代码可直接用

    技术2022-06-08  53

    action中的代码

       try {//    多附件上传       MultipartRequestHandler mrh = conForm.getMultipartRequestHandler();       Map formFiles = mrh.getFileElements();    String fileName="";    if (formFiles!=null){     AnnexsUpload au = new AnnexsUpload(req,res);//获得上传附件通用对象     Iterator it = formFiles.values().iterator();     while (it.hasNext()) {      //图片上传      FormFile file = (FormFile)it.next();      au.setSaveDir(this.servlet.getServletContext().getRealPath("/loadImage/"));//将图片放入存储文件路径      fileName=au.randomFileName(file.getFileName());      au.upload(au.getSaveDir()+File.separator+ fileName, fileName, file);//上传附件      //保存记录      IAttachmentDAO ia = new AttachmentDAO();      TabAttachment att = new TabAttachment();      att.setFieldId(con.getCoid());//把资讯表的id添加到附件表里面      att.setTableName(tableName);  //关联的表名      att.setAttachFile(fileName);  //上传到服务器的文件名      att.setRemark(file.getFileName());//文件原来的真名      att.setUploadName(user.getRealname()); //上传者,即登录者姓名      ia.addAttachment(att);     }     }   } catch (Exception e) {   }

     

    AnnexsUpload.java

    package com.bcc.comm;

    import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.net.MalformedURLException;import java.net.URL;import java.util.List;

    import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.fileupload.DiskFileUpload;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.struts.upload.FormFile;

    public class AnnexsUpload { private HttpServletResponse response; private HttpServletRequest request; private String saveDir;//文件保存路径 private String oldFileName;//原始文件名 private String newFileName;//新文件名 private String newFilePath;//新文件路径 private long fileSize;//文件大小 private long maxFileSize = 1024 * 1024 * 20;//上传文件最大大小6M private int thresholdSize = 4000;//起始大小  public AnnexsUpload(HttpServletRequest request, HttpServletResponse response) {  super();  this.response = response;  this.request = request; } //产生随机文件名 public synchronized String randomFileName(String fileName){  String temp = fileName.substring(fileName.lastIndexOf("."));//得到文件扩展名  try {   Thread.sleep(10);//如果有多个线程同时上传就休眠1毫秒,这样就可以避免产生的文件名一样  } catch (InterruptedException e) {   e.printStackTrace();  }  return System.currentTimeMillis() + temp; } //文件目录不存在则创建 public void setSaveDir(String saveDir){  this.saveDir = saveDir;  File f = new File(this.saveDir);  if(!(f.isDirectory())){   f.mkdirs();  } }  //上传单个文件 public boolean upload(){  DiskFileUpload dfu = new DiskFileUpload();  dfu.setSizeMax(this.maxFileSize);//设置上传文件最大值  dfu.setSizeThreshold(this.thresholdSize);//设置初始大小  dfu.setRepositoryPath(this.newFilePath);//设置上传路径  List list = null;  try {   list = dfu.parseRequest(this.request);//解析request并且返回list集合  } catch (FileUploadException e) {   e.printStackTrace();  }//  System.out.println(list.isEmpty());  for (int i = 0; i < list.size(); i++) {   FileItem fi = (FileItem) list.get(i);   try {    //中文编码转换    this.oldFileName = new String(fi.getFieldName().getBytes(),"GB2312");    //得到原始文件名    this.oldFileName = this.oldFileName.substring(this.oldFileName.indexOf("//") + 1);    this.fileSize = fi.getSize();    if(this.fileSize > this.maxFileSize){     System.out.println("文件太大");     return false;    }    this.newFileName = this.randomFileName(this.oldFileName);    this.newFilePath = this.saveDir + this.newFileName;    File f = new File(this.saveDir,this.newFileName);    fi.write(f);   } catch (UnsupportedEncodingException e) {    e.printStackTrace();    return false;   } catch (Exception e) {    e.printStackTrace();    return false;   }  }  return true; }  //上传新文件/* public boolean upload(FormFile file){  try {   this.fileSize = file.getFileSize();   if(this.fileSize > this.maxFileSize){    System.out.println("文件太大");    return false;   }   this.oldFileName = new String(file.getFileName().getBytes(),"GB2312");   this.oldFileName = this.oldFileName.substring(this.oldFileName.lastIndexOf("//") + 1);   this.newFilePath = this.saveDir + "//" + this.randomFileName(this.oldFileName);   this.newFileName = this.randomFileName(this.oldFileName);      AnnexsBean fb = new AnnexsBean();   fb.AddAnnexs(new Annexs(this.newFilePath,this.newFileName,this.fileSize + ""));   //构造输入流   BufferedInputStream bis = new BufferedInputStream(file.getInputStream(),(int)this.fileSize);   File f = new File(this.newFilePath);   FileOutputStream fos = new FileOutputStream(f);      byte[] b = new byte[1024];   int len = 0;   while((len = bis.read(b)) > 0){    fos.write(b,0,len);//从缓冲区里读取数据写入输出流   }   fos.close();   bis.close();   return true;  } catch (Exception e) {   e.printStackTrace();   return false;  } }*/  //以自定义的名称保存文件 public boolean upload(String filePath,String fileName,FormFile file){  this.fileSize = file.getFileSize();  if(this.fileSize > this.maxFileSize){   System.out.println("文件太大");//如果大于6M   return false;  }  this.oldFileName = file.getFileName();  this.newFileName = fileName;  this.newFilePath = filePath;  try {   BufferedInputStream bis = new BufferedInputStream(file.getInputStream(),(int)this.fileSize);   File f = new File(this.newFilePath);   FileOutputStream fos = new FileOutputStream(f);      byte[] b = new byte[1024];   int len = 0;   while((len = bis.read(b)) > 0){    fos.write(b,0,len);   }   fos.close();   bis.close();   return true;  } catch (FileNotFoundException e) {   e.printStackTrace();   return false;  } catch (IOException e) {   e.printStackTrace();   return false;  } }  //删除文件 public static boolean deleteFile(String path){  File f = new File(path);  if(f.exists()){   f.delete();   return true;  }else   return false; } /**  * 删除文件  * @param uploadPath 文件的路径  * @param fileName  文件名  */ public static void deleteFile(String uploadPath,String fileName){  File file = new File(uploadPath+fileName);  if(file.exists()){       file.delete();  }else{//   System.out.println(uploadPath+fileName+"文件不存在");  } }

     public void setSaveDirReport(String saveDir){  this.saveDir = saveDir;  File f = new File(this.saveDir);  if(f.isDirectory()){   f.mkdirs();  } }  //文件下载 public void download(String filePath,String fileName,boolean isOnline){  File file = new File(filePath);  System.out.println(filePath);  if(!file.exists()){   try {    throw new Exception("文件不存在");   } catch (Exception e) {    e.printStackTrace();   }   return;  }  try {   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));   byte[] b = new byte[1024];   int len = 0;      response.reset();   if(isOnline){    URL url = new URL("file:///" + filePath);    response.setContentType(url.openConnection().getContentType());    response.setHeader("Content-Disposition", "inline;filename=" + new String((fileName + filePath.substring(filePath.lastIndexOf("."))).getBytes(),"ISO-8859-1"));   }else{    response.setContentType("application/x-msdownload");    response.setHeader("Content-Disposition", "attachment; filename=" + new String((fileName+filePath.substring(filePath.lastIndexOf("."))).getBytes(),"ISO-8859-1"));   }   OutputStream out = response.getOutputStream();   while((len = bis.read(b)) > 0){    out.write(b,0,len);   }   out.close();   bis.close();  } catch (FileNotFoundException e) {   e.printStackTrace();  } catch (MalformedURLException e) {   e.printStackTrace();  } catch (IOException e) {   e.printStackTrace();  }   }  }

    jsp页面代码

    <tr>        <th>附件</th>        <td colspan="3" >         <input type="checkbox" id="chkAtt" οnclick="myShow();">上传附件         <table>          <c:forEach var="listatt" items="${listAtt}">           <tr id="imgdiv${listatt.tatId}"><td style="border:0px;">${listatt.remark}            <a href="javascript:form111(${listatt.tatId})"><img border="0" alt="删除" src="<%=request.getContextPath()%>/background/images/del.jpg"/></a>           </td>           </tr>           <tr><td><div id="mdiv"></div></td></tr>          </c:forEach>         </table>         <table width="100%" style="display: none;" id="PLList" class="chart_list">        <tr><td align="left" width="38%">        <input type="file" name="file" size="49" class="inputs" />        <td>           <nobr>          <input type="button" value=" + " οnclick="insertRow()"  class="buttoncss" title="增加一行">          <input type="button" onClick="DeleteRow('PLList')" value=" - " class="buttoncss" title="删除一行">          </nobr>         <input type="hidden" value="0" name="count" id="count">         <input type="hidden" name="isInputmavin" id="isInputmavin" value="0">         <input type="hidden" name="orderNo" id="orderNo">        </td></tr>       </table>     </td>    </tr>

     

     

    function form111(pid){   var imgdiv = $("#imgdiv"+pid);   var mdiv = $("#mdiv");   $.post('contentManage.do?method=deleteFileUp&tatid='+pid,null,function callback1(data){});   imgdiv.hide();   //mdiv.text("删除成功!").css("color","red");  }

     

    down.jsp下载页面

     

     <%@ page language="java" pageEncoding="UTF-8"%><%@ page import="com.jspsmart.upload.SmartUpload"%>

    <% //下载文件页面 SmartUpload down = new SmartUpload(); //初始化环境 down.initialize(pageContext);  //得到下载文件参数名称 String file =(String)request.getParameter("file");  //重新设置字符编码 如果有必要 //file = new String(file.getBytes("ISO8859_1-1"),"GBK");

      try{      down.setContentDisposition(null);   String descFileName = file;   byte[] b = descFileName.getBytes();   char[] c = new char[b.length];   for (int x = 0; x < b.length; x++)c[x] = (char) (b[x] & 0x00FF);   descFileName = new String(c);   down.downloadFile(file,"text/xml/txt",descFileName);   out.clear();   out = pageContext.pushBody(); }catch(Exception ex){  System.out.println("下载文件失败!<br>");  out.println("下载文件失败!<br>");  out.println("错误原因:<br>"+ex.toString()); }%>

    ---

    <a href="<%=request.getContextPath()%>/background/contentManage/view/down.jsp?file=${hurl}${listatt.attachFile}">下载</a></td>

    =========

     

     

     懒得敲代码。写的拿过来放这里。用时。直接用。


    最新回复(0)