Java上传文件实例

package com.yc.eap.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.log4j.Logger;

public class UpLoad {

public static final Logger logger = Logger.getLogger(UpLoad.class);
private HttpServletRequest request = null;
private static int fileSize = 200;
private String filePath;
private Map<String,Object> map = new HashMap<String,Object>();

public UpLoad(HttpServletRequest request){
this.request = request;
}

public void upLoad() throws Exception{
String name = null;
DiskFileUpload fu = new DiskFileUpload();
/**用于设定请求消息中实体内容的最大允许大小,这里设置最大上传文件的大小为200M*/
fu.setSizeMax(fileSize*1024*1024);
/**设置用临时文件来存放临时解析出的数据值,临时数据值的临界值为1M*/
fu.setSizeThreshold(1024*1024);
/**用于存放临时文件的存放目录,必需为绝对路径,如果不设定将存放在Tomcat目录下的temp文件下*/
fu.setRepositoryPath("/temp/upload/");
/**parseRequest(request)方法是DiskFileUpload的重要方法是Http请求的入口,如果请求消息中的实体不是
* "multipart/form-data",该方法将抛出异常*/
FileUploadBase.isMultipartContent(request);
List filelist = null;
try {
filelist = fu.parseRequest(request);
} catch (FileUploadException e) {
logger.info("消息实体不是multipart/form-data类型"+e.getMessage());
map.put("flag", "false");

}
Iterator i = filelist.listIterator();
while(i.hasNext()){
FileItem fi = (FileItem)i.next();
if(fi.isFormField()){
String fieldName = fi.getFieldName();
String fieldValue = fi.getString();
map.put(fieldName, fieldValue);
}else{
String fileName = fi.getName();
if(fileName.trim().equals("")){
continue;
}else{
int start = fileName.lastIndexOf('\\');
name = this.produceName()+fileName.substring(start+1);
/**此处需要设置获取应用的路径名称用来存放文件*/
File file = null;
if(this.filePath==null || "".equals(this.filePath)){
file = new File("D:/tomcat-eap/webapps/eap/upLoad/",name);
/**如果文件已经存在,则删除原有文件,上传新文件覆盖原有文件。*/
if(file.exists()){
file.delete();
}
}else{
file = new File(this.filePath,name);
/**如果文件已经存在,则删除原有文件,上传新文件覆盖原有文件。*/
if(file.exists()){
file.delete();
}
}
try{
fi.write(file);
map.put("flag", "true");
} catch (Exception e) {
logger.info("文件写入错误"+e.getMessage());
throw e;
}finally{
fi.delete();
map.put("flag", "false");
}
}
}
}

}

public String getFilePath() {
return filePath;
}

public void setFilePath(String filePath) {
this.filePath = filePath;
}

public String getParameter(String key){
return (String)map.get(key);
}

public static UpLoad getInstance(HttpServletRequest request) {
return new UpLoad(request);
}
/**通过日期函数进行区分,保证同时上传文件不会冲突*/
private String produceName(){
Calendar ca = Calendar.getInstance();
ca.setTime(new java.util.Date());
SimpleDateFormat simple = new SimpleDateFormat("yyyyMMddkkmmss");
String date = simple.format(ca.getTime());
return date;
}

}
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ page contentType="text/html;charset=gb2312" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%> <%@page import="java.io.File,java.util.Date;"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>上传文件</title> </head> <body> <table border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td height="45" align="center" valign="middle"> <form action="index.jsp?flag=1" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="file"> <input type="hidden" name="file"> <input type="submit" name="Submit" value="上传"> </form></td> </tr> </table> <% if(null != request.getParameter("flag")){ SmartUpload mySmartUpload =new SmartUpload(); long file_size_max=4000000; String fileName2="",ext="",testvar=""; String url="upload/"; //应保证在根目录中有此目录的存在(也就是说需要自己建立相应的文件夹) //初始化 mySmartUpload.initialize(pageContext); //只允许上载此类文件 try { mySmartUpload.setAllowedFilesList("xls");//此处的文件格式可以根据需要自己修改 //上载文件 mySmartUpload.upload(); } catch (Exception e){ %> <SCRIPT language=javascript> alert("只允许上传.xls类型文件"); </script> <% } try{ com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0); if (myFile.isMissing()){%> <SCRIPT language=javascript> alert("请先选择要上传文件"); </script> <%} else{ String myFileName=myFile.getFileName(); //取得上载的文件文件名 //out.println(myFileName); ext= myFile.getFileExt(); //取得后缀名 int file_size=myFile.getSize(); //取得文件的大小 String saveurl=""; if(file_size<file_size_max){ //更改文件名,取得当前上传时间的毫秒数值 //Calendar calendar = Calendar.getInstance(); Date date = new Date(); String filename = String.valueOf((1900+date.getYear()))+String.valueOf((date.getMonth()+1)); saveurl=application.getRealPath("/")+url; File file = new File(saveurl); if(!file.exists()){ file.mkdirs(); } saveurl+=filename+"."+ext; //保存路径 myFile.saveAs(saveurl,SmartUpload.SAVE_PHYSICAL); String ret = "alert('上传成功!');"; out.print("<script language=javascript>" + ret + "</script>"); } } }catch (Exception e){ out.print(e.toString()+"错误信息......................!"); } } %> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值