javascript实现简单多文件上传

一、archiveFile.jsp 

addinput方法动态添加input,名字为importFiles,id不同。

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@page session="false"%> 
<%@taglib prefix="s" uri="/struts-tags" %>










"/>
归档信息
姓名: "/>
身份证号: "/>
附件:

附件: ','')"/> ','');"/>


"/>

 

 

二、action后台上传保存

importFiles为接收文件,importFilesFileName获取文件真实名字

UploadUtils.uploadFileByFileAndUrl(importFiles,importFilesFileName,psId);为上传文件

	private File [] importFiles;//文件上传
	private String[] importFilesFileName;//上传文件名字
	private List fileNameList;//文件展示列表
	private String archiveName;//单个文件名字
	private String pdfUrl;
   //getset方法
    public File[] getImportFiles() {
		return importFiles;
	}

	public void setImportFiles(File[] importFiles) {
		this.importFiles = importFiles;
	}

	public String[] getImportFilesFileName() {
		return importFilesFileName;
	}

	public void setImportFilesFileName(String[] importFilesFileName) {
		this.importFilesFileName = importFilesFileName;
	}
   public List getFileNameList() {
		return fileNameList;
	}

	public void setFileNameList(List fileNameList) {
		this.fileNameList = fileNameList;
	}

	public String getArchiveName() {
		return archiveName;
	}

	public void setArchiveName(String archiveName) {
		this.archiveName = archiveName;
	}


	/**
	 * 归档保存
	 * @return
	 * @throws Exception
	 */
	public String archiveToSave(){
	  try {	this.vfp=(VFp)super.getInPack().getFamilyInterfaces().getEntityBySerID(VFp.class, this.psId);
	        boolean re=UploadUtils.uploadFileByFileAndUrl(importFiles,importFilesFileName,psId);  
		    if(re){	
				fileNameList=this.getArchiveList(this.psId);
				return "archiveToSaveOk";
			}else { 
			return "archivefail";
			}
		} catch (Exception e) {	
			e.printStackTrace();
			return "archivefail"; 
		}
	}

 

三、UploadUtils为工具类


  /**
   * 上传文件  
   * @param sourceFile 页面传入的文件
   * @param url 文件保存路径
   * @return
   */
  public static boolean uploadFileByFileAndUrl(File[] importFiles,String[] importFilesFileName,String psId){
	  if(importFiles==null || importFiles.length==0){ return false;}
	    String u=ServletActionContext.getServletContext().getRealPath("/")+"TempFolder/archive/"+psId+"/";
	    File file = new File(u);
	    if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}
        if(!file.exists()){file.mkdir();}
        try{
		        for (int i = 0; i < importFiles.length; i++) {
					  if(importFiles[i]!=null){ 
					  String n=UUID.randomUUID().toString().replace("-", "").toLowerCase();	 
					  String url =u+n+".pdf";  
					  InputStream is = new FileInputStream(importFiles[i]);  // 设置目标文件   
					  File toFile = new File(url);  // 创建一个输出流   
					  OutputStream os = new FileOutputStream(toFile);   //设置缓存   
					  byte[] buffer = new byte[1024];   
					  int length = 0;    //读取myFile文件输出到toFile文件中   
					  while ((length = is.read(buffer)) > 0) {   
						  os.write(buffer, 0, length);   
					  }   
					  is.close();   //关闭输入流        
					  os.close();   //关闭输出流  
					  
				  String txtUrl=ServletActionContext.getServletContext().getRealPath("/")+"TempFolder/archive/"+psId+"_config.txt";  
                  String content= importFilesFileName[i]+","+n;
				  UploadUtils.WriteTxt(txtUrl, content); 
				}		  
              } 
  	        return true;
		  }catch(Exception e){
			  return false;
		  }     
  }




/**
   * 写入配置文件
   * @param content 追加内容
   * @param url 文件保存路径
   * @return
   */
   public static boolean WriteTxt(String txtUrl,String content) {
	   try {
		   File file = new File(txtUrl);//"E:\\test\\jsonFile\\test.json"     //建立一个File对象
		   if(!file.getParentFile().exists()){//判断该文件的所属文件夹存不存在,不存在则创建文件夹
			   file.getParentFile().mkdirs();
		   }
		   FileWriter fw = new FileWriter(file,true); //创建字符流(使用字节流比较麻烦)
		   BufferedWriter  bw=new BufferedWriter(fw);
		   //判断file是否存在
		   if(!file.exists()){
			   //如果不存在file文件,则创建
			   file.createNewFile();
			   bw.write(content+".pdf");//"[{\"name\":\"你好\"}]"
		       bw.newLine();
		   }else{
			   bw.append(content+".pdf");//如果存在该file,可以根据情况来追加该file文件的内容
			   bw.newLine();
			   }
		   bw.flush();//这里要说明一下,write方法是写入缓存区,并没有写进file文件里面,要使用flush方法才写进去
		   bw.close();//关闭资源
		   fw.close();
		   return true; 
		   } catch (IOException e){
			   e.printStackTrace();
		     return false; 
		 }
	   }







 

你可能感兴趣的:(javascript实现简单多文件上传)