html:file
参考”struts学习笔记.doc”
自编的一个的文件上传类
com.cn.rolia.util.struts.upload .UploadUtil.java
package com.cn.rolia.util.struts.upload;
import org.apache.struts.upload.FormFile;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashSet;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @author rolia
*
*/
public class UploadUtil {
/*
* FormFile,表示要上传的文件
*/
FormFile file;
/**
* 保存目录
*/
String savePath;
/**
* 文件大小
*/
int fileSize;
/**
* 上传文件的最大值,单位为 byte
*/
int sizeLimited;
/**
* 文件名
*/
String fileName;
/**
* 文件类型
*/
String fileType;
/**
* 允许的文件类型
*/
HashSet allowedExt;
public UploadUtil(FormFile file){
this.file = file;
this.fileSize=file.getFileSize();
this.fileName=file.getFileName();
this.fileType=file.getContentType();
this.savePath = null;
allowedExt = null;
this.sizeLimited = 0;
}
public UploadUtil(FormFile file,String savePath){
this.file = file;
this.fileSize=file.getFileSize();
this.fileName=file.getFileName();
this.fileType=file.getContentType();
this.savePath = savePath;
allowedExt = null;
this.sizeLimited = 0;
}
public UploadUtil(FormFile file,String savePath,HashSet allowedExt){
this.file = file;
this.fileSize=file.getFileSize();
this.fileName=file.getFileName();
this.fileType=file.getContentType();
this.savePath = savePath;
this.allowedExt = allowedExt;
this.sizeLimited = 0;
}
public UploadUtil(FormFile file,String savePath,HashSet allowedExt,int sizeLimited){
this.file = file;
this.fileSize=file.getFileSize();
this.fileName=file.getFileName();
this.fileType=file.getContentType();
this.savePath = savePath;
this.allowedExt = allowedExt;
this.sizeLimited = sizeLimited;
}
public UploadUtil(FormFile file,String savePath,HashSet allowedExt,int sizeLimited,String fileName){
this.file = file;
this.fileSize=file.getFileSize();
this.fileName=fileName;
this.fileType=file.getContentType();
this.savePath = savePath;
this.sizeLimited = sizeLimited;
this.allowedExt = allowedExt;
}
/**
* 保存文件操作。
* 以下情况会抛出异常:
* 1。 上传文件的类型不允许
* 2。 上传文件的大小超出允许的最大值
* 3。 没有指定文件的保存路径
* 4。 指定的文件保存路径不存在
* 5。 服务器上已有与上传文件同名的文件
* 6。 IO错误
* @throws Exception 文件保存过程中出现的异常。
*/
public void writeFile()throws Exception{
Log log = LogFactory.getLog(UploadUtil.class);
//过滤上传文件的类型
if(allowedExt==null){
log.info("Allow all types of file being uploaded!");
}else{
boolean flag = false;
Iterator iterator = allowedExt.iterator();
while(iterator.hasNext() && flag==false){
flag = this.fileName.endsWith(iterator.next().toString());
}
if(flag==false){
log.warn("The type of file \""+this.fileName+"\" is firbided!");
throw new UploadException("The type of file \""+this.fileName+"\" is firbided!");
}
}
//设置允许上传文件的最大值
if((sizeLimited!=0) && (this.fileSize > this.sizeLimited)){
log.warn("The file is greater than "+this.sizeLimited+"bytes");
throw new UploadException("The file is greater than "+this.sizeLimited+"bytes");
}
//检查是否指定了保存路径
if(savePath==null){
log.error("The destination file being saved is not assigned!");
throw new UploadException("The destination file being saved is not assigned!");
}
//检查指定的路径是否存在
File saveFile = new File(savePath+"\\"+this.fileName);
if(!saveFile.getParentFile().exists()){
log.error("The Directory: "+savePath+" is not exists!");
throw new UploadException("The Directory: \""+savePath+"\" is not exists!");
}
//检查服务器里是否已经存在此上传的文件
if(saveFile.exists()){
log.error("The file: "+saveFile.getPath()+" has existed!");
throw new UploadException("The file: \""+saveFile.getPath()+"\" has existed!");
}
//开始上传
InputStream in = null;
OutputStream out = null;
try{
in = new BufferedInputStream(file.getInputStream());
out = new BufferedOutputStream(new FileOutputStream(saveFile));
int b;
while((b=in.read())!=-1){
out.write((char)b);
}
}catch(IOException e){
log.error(e.getMessage());
throw new IOException(e.getMessage());
}
finally{
try{
if(out!=null)out.close();
if(in!=null)in.close();
}catch(IOException e){
log.error(e.getMessage());
throw new IOException(e.getMessage());
}
}
file.destroy();
log.info("File \""+saveFile.getPath()+"\" has been saved successfully!");
}
public HashSet getAllowedExt() {
return allowedExt;
}
public FormFile getFile() {
return file;
}
public String getFileName() {
return fileName;
}
public int getFileSize() {
return fileSize;
}
public String getFileType() {
return fileType;
}
public int getSizeLimited() {
return sizeLimited;
}
public String getSavePath() {
return savePath;
}
public void setAllowedExt(HashSet allowedExt) {
this.allowedExt = allowedExt;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public void setSizeLimited(int sizeLimited) {
this.sizeLimited = sizeLimited;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
}
评论