struts2上传和下载文件

编程技术  /  houtizong 发布于 3年前   106
package com.zx.example.action;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Calendar;import javax.servlet.http.HttpServletResponse;import jxl.Workbook;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.read.biff.BiffException;import jxl.write.Label;import jxl.write.WritableCellFormat;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;import com.zx.example.util.ConfigHelper;@SuppressWarnings("serial")public class FileAction extends ActionSupport {    private static final Log log=LogFactory.getLog(FileAction.class);    private File[] myFile;  //上传的文件    public File[] getMyFile() {return myFile;}public void setMyFile(File[] myFile) {this.myFile = myFile;}private String[] myFileFileName; //上传的文件名public String[] getMyFileFileName() {return myFileFileName;}public void setMyFileFileName(String[] myFileFileName) {this.myFileFileName = myFileFileName;}private String[] myFileContentType; //上传的文件类型public String[] getMyFileContentType() {return myFileContentType;}public void setMyFileContentType(String[] myFileContentType) {this.myFileContentType = myFileContentType;}private String uploadDir;  //上传的目录public String getUploadDir() {return uploadDir;}public void setUploadDir(String uploadDir) {this.uploadDir = uploadDir;}public String fileUpload(){String fileDir=ServletActionContext.getServletContext().getRealPath(uploadDir);log.info("fileDir="+fileDir);for(int i=0;i<myFile.length;i++){    log.info("myFileFileName["+i+"]="+myFileFileName[i]);     log.info("myFileContentType["+i+"]="+myFileContentType[i]);      int pot=myFileFileName[i].lastIndexOf("."); String suffix=myFileFileName[i].substring(pot,myFileFileName[i].length()); log.info("suffix="+suffix); String newFileName=createNewFileName()+i+suffix; log.info("newFileName="+newFileName);     File dir=new File(fileDir); if(!dir.exists()) {    dir.mkdir();  }   File newFile=new File(dir,newFileName);    copyFile(myFile[i], newFile);}   return SUCCESS;}/** * 将源文件内容copy到目标文件中 * @param src 源文件,页面上传的文件 * @param dst 目标文件,重新命名并保存到服务器上的新文件 * @throws Exception */public void copyFile(File src,File dst){    InputStream is=null;    OutputStream os=null;    try{          is = new BufferedInputStream(new FileInputStream(src));          os = new BufferedOutputStream(new FileOutputStream(dst));          byte buffer[] = new byte[8192];          int len = 0;          while((len = is.read(buffer))!=-1)          {             os.write(buffer, 0, len);           }             }catch(IOException e){          e.printStackTrace();          }finally{     try{     if(is!=null)     {     is.close();     }          }catch(IOException e)     {     e.printStackTrace();     }          try{     if(os!=null)     {     os.close();     }          }catch(IOException e)     {     e.printStackTrace();     }     }        }/** * 利用系统当前时间生成新的文件名称 * @return */public String createNewFileName(){Calendar now=Calendar.getInstance();        String targetName=String.valueOf(now.get(now.YEAR))+String.valueOf(now.get(now.MONTH)+1);        targetName+=String.valueOf(now.get(now.DAY_OF_MONTH))+String.valueOf(now.get(now.HOUR_OF_DAY));        targetName+=String.valueOf(now.get(now.MINUTE))+String.valueOf(now.get(now.SECOND));        return targetName;}/** * 文件下载 * @throws   * @throws IOException */public void fileDownload(){   try{   ConfigHelper config=new ConfigHelper();  HttpServletResponse response=ServletActionContext.getResponse();String uploadDir=config.getMessage("upload");System.out.println("uploadDir="+uploadDir);String fileName="局数据制作单模板.xls";String template=config.getMessage("template_excel");File templateFile=new File(template);//将模板文件的内容拷贝到新文件中并保存到upload目录下File dir=new File("uploadDir");if(!dir.exists()){System.out.println("upload目录不存在");dir.mkdir();}File newFile=new File(dir,fileName);copy(templateFile,newFile);Workbook wb=Workbook.getWorkbook(newFile);WritableWorkbook book=Workbook.createWorkbook(newFile, wb);WritableSheet sheet=book.getSheet(0); //属性样式定义        WritableCellFormat itemFormat=new WritableCellFormat();    itemFormat.setAlignment(jxl.format.Alignment.CENTRE);    itemFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);    itemFormat.setBorder(Border.ALL, BorderLineStyle.THIN);  Label label=null;label=new Label(1,0,"河南工业大学2009",itemFormat);sheet.addCell(label);label=new Label(4,0,"2009-03-16",itemFormat);sheet.addCell(label);label=new Label(8,0,"紧急",itemFormat);sheet.addCell(label);label=new Label(1,1,"彭怀义",itemFormat);sheet.addCell(label);label=new Label(4,1,"郑州市正信科技发展有限公司",itemFormat);sheet.addCell(label);label=new Label(8,1,"13526884003",itemFormat);sheet.addCell(label);label=new Label(11,1,"[email protected]",itemFormat);sheet.addCell(label);int j=3;while(j<10){for(int i=0;i<24;i++){label=new Label(i,j,"love",itemFormat);sheet.setRowView(j, 400);sheet.addCell(label);}j++;}book.write();book.close();wb.close();InputStream is=new BufferedInputStream(new FileInputStream(newFile));OutputStream os=new BufferedOutputStream(response.getOutputStream());fileName=new String(fileName.getBytes("GBK"),"ISO-8859-1");response.reset();response.setContentType("application/x-msdownload");response.setContentLength((int)newFile.length());response.setHeader("Content-Disposition", "attachment;filename="+fileName);byte[] buffer=new byte[8192];int len=0;while((len=is.read(buffer))!=-1){os.write(buffer, 0, len);}is.close();os.close();   }catch(Exception e){   System.out.println("---->error="+e.getMessage());   e.printStackTrace();   }}/** * 将templateFile的内容拷贝到newFile中 * @param templateFile * @param newFile */private void copy(File templateFile,File newFile){try{InputStream is=new FileInputStream(templateFile);OutputStream os=new FileOutputStream(newFile);byte[] buffer=new byte[1024*4];int len=0;while((len=is.read(buffer))!=-1){os.write(buffer, 0, len);}is.close();os.close();}catch(IOException e){e.printStackTrace();}}}

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客