struts2上传多张图片的方法

原文地址
package eao;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import javax.servlet.ServletContext;

import org.apache.struts2.ServletActionContext;

import util.PictureNameBuilder;


public class PictureEAO {
	public static String[] savePicture(File[] pictures,String[] pictureFilename,String savePath){
		//开一个和文件数组大小相同的字符串数组
		String[] imgsrc=new String[pictures.length];
		//获取项目上下文
		ServletContext context=ServletActionContext.getServletContext();
		//获取照片存储的相对地址在项目中应对应的全路径
		String realSavePath=context.getRealPath(savePath);
		//创建文件夹
		File saveDirectory=new File(realSavePath);
		if(!saveDirectory.exists()){saveDirectory.mkdirs();}
		//处理图片
		for(int i=0;i<imgsrc.length;i++){
			//获取第i张图片的上传时的名称
			String photoFileName=pictureFilename[i];
			//获取第i张图片保存时的名称
			String saveFileName=PictureNameBuilder.getPictureName();
			//取文件后缀
			String ext=photoFileName.substring(photoFileName.lastIndexOf("."));
			//拼接得到文件的项目中存储地址
			String outFilePath=realSavePath+"/"+saveFileName+ext;
			//保存项目图片的相对地址,方便在网页中进行访问
			imgsrc[i]=savePath+"/"+saveFileName+ext;
			System.out.println("%%%%%%%%%%%%%%%%%%%%%%%% 截断前"+imgsrc[i]+"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
			imgsrc[i]=imgsrc[i].substring(1);
			System.out.println("%%%%%%%%%%%%%%%%%%%%%%%% 截断后"+imgsrc[i]+"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
			try {
				//开缓冲文件输入流,并将pictures[i]作为文件输入流传入
				BufferedInputStream bis=new BufferedInputStream(new FileInputStream(pictures[i]));
				//开缓冲文件输出流,并将outFilePath作为文件输出地址
				BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(outFilePath));
				int tmp=-1;
				//按为写入输出流
				while ((tmp=bis.read())!=-1){
					bos.write(tmp);
				}
				//将输出流中的内容写入文件
				bos.flush();
				//关闭两个流
				bos.close();
				bis.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
		return imgsrc;
	}
}


猜你喜欢

转载自blog.csdn.net/zcy_wxy/article/details/80718117