/**
* created FileModel.java by Dirac on 2009-12-3 下午05:50:57
*/
package cn.boyi.upload;
import java.util.HashMap;
import java.util.Map;
/**
* @author Dirac
* @version 1.0
*/
public class FileModel {
private long size;
private int width;
private int height;
private String path;
private String ext;
private Map<String, String> params = new HashMap<String, String>(0);
/**
* @return 返回 path。
*/
public String getPath() {
return path;
}
/**
* @param path
* 要设置的 path。
*/
public void setPath(String path) {
this.path = path;
}
/**
* @return 返回 height。
*/
public int getHeight() {
return height;
}
/**
* @param height
* 要设置的 height。
*/
public void setHeight(int height) {
this.height = height;
}
/**
* @return 返回 size。
*/
public long getSize() {
return size;
}
/**
* @param size
* 要设置的 size。
*/
public void setSize(long size) {
this.size = size;
}
/**
* @return 返回 width。
*/
public int getWidth() {
return width;
}
/**
* @param width
* 要设置的 width。
*/
public void setWidth(int width) {
this.width = width;
}
/**
* @return 返回 扩展名。
*/
public String getExt() {
return ext;
}
/**
* @param ext 要设置的 扩展名。
*/
public void setExt(String ext) {
this.ext = ext;
}
/**
* @return the params
*/
public Map<String, String> getParams() {
return params;
}
}
/**
* created FileDirectoryCreator.java by Dirac on 2009-12-4 上午12:54:07
*/
package cn.boyi.upload;
/**
* @author Dirac
* @version 1.0
*/
public interface FileDirectoryCreator {
/**
* 获得文件的生成路径
* @return
*/
String createFileDirectory();
/**
* 获得文件名
* @return
*/
String createFileName();
/**
* 注入参数
* @param name
* @param value
*/
public void put(String name, String value);
}
/**
* created BaseFileDirectoryCreator.java by Dirac on 2009-12-4 上午01:02:06
*/
package cn.boyi.upload;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author Dirac
* @version 1.0
*/
public class BoyiFileDirectoryCreator implements FileDirectoryCreator {
Map<String, String> params = new HashMap<String, String>(0);
public BoyiFileDirectoryCreator(){}
public BoyiFileDirectoryCreator(String type, Integer id, String fileName){
params.put("type", type);
params.put("id", id==null ? null : String.valueOf(id));
params.put("fileName", fileName);
}
/**
* @see cn.boyi.upload.FileDirectoryCreator#createFileDirectory()
*/
@Override
public String createFileDirectory(){
String type = params.get("type");
String id = params.get("id");
Calendar cal = Calendar.getInstance();
StringBuilder fileDirectory = new StringBuilder("/upload/");
if(type!=null && !type.trim().equals(""))fileDirectory.append(type).append("/");
if(id!=null && !id.trim().equals(""))fileDirectory.append(id).append("/");
fileDirectory.append(cal.get(Calendar.YEAR)).append("-");
if(cal.get(Calendar.MONTH)<9)fileDirectory.append("0");
fileDirectory.append((cal.get(Calendar.MONTH) + 1)).append("-");
if(cal.get(Calendar.DAY_OF_MONTH)<10)fileDirectory.append("0");
fileDirectory.append(cal.get(Calendar.DAY_OF_MONTH)).append("/");
return fileDirectory.toString();
}
/**
* 注入参数
* @param name
* @param value
*/
public void put(String name, String value){
params.put(name, value);
}
/**
* @see cn.boyi.upload.FileDirectoryCreator#createFileName()
*/
@Override
public String createFileName() {
String oriParam = getParam("original");
boolean original = oriParam==null ? false : Boolean.valueOf(oriParam);
if(original && getParam("oriName")!=null)return getParam("oriName");
String fileName = params.get("fileName");
if(fileName==null)fileName = new SimpleDateFormat("yyyyMMddhhMMss").format(new Date());
return fileName;
}
/**
* 获取参数
* @param name
* @return
*/
private String getParam(String name){
return name==null || name.trim().equals("") ? null : params.get(name);
}
}
/**
* created FileUpload.java by Dirac on 2009-12-3 下午05:52:12
*/
package cn.boyi.upload;
import java.io.File;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* @author Dirac
* @version 1.0
*/
public class FileUpload {
/**
* Uploads file from HttpServletRequest,depends on commons-fileupload-1.2.1 and commons-io-1.3.2
*
* @param request
* @param basePath
* The path of the web context.
* @param fileDirectory 负责生成文件上传路径和名称
* @return the uploaded image path which is relative to the web context
*/
public static FileModel uploadFile(HttpServletRequest request, String basePath, FileDirectoryCreator fileDirectoryCreator) {
long maxSize = 1073741824;
FileModel model = new FileModel();
if(!ServletFileUpload.isMultipartContent(request))return null;
DiskFileItemFactory factory = new DiskFileItemFactory();
//设定内存可以存放文件的最大容量,单位字节,超过的部分会以临时文件的形式存放在硬盘上,这里设置成10兆
factory.setSizeThreshold(10485760);
File temp = new File(new StringBuilder(basePath).append("/temp").toString());
if(!temp.exists()){
temp.mkdirs();
}
//设置临时文件存放的位置
factory.setRepository(temp);
ServletFileUpload upload = new ServletFileUpload(factory);
//设置单个文件最大容量限制,-1表示没有限制
upload.setFileSizeMax(-1);
//设置整个请求的上传容量限制,-1表示没有限制
upload.setSizeMax(maxSize);
String image = "";
try {
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> iterator = items.iterator();
FileItem uploadFile = null;
String encoding = request.getCharacterEncoding();
while (iterator.hasNext()) {
FileItem item = iterator.next();
org.apache.commons.fileupload.disk.DiskFileItem i;
if(item.isFormField()){
if(!item.getFieldName().equals("url")){
model.getParams().put(item.getFieldName(), item.getString(encoding));
fileDirectoryCreator.put(item.getFieldName(), item.getString(encoding));
}else if(item.getFieldName().equals("url")){
String old = item.getString(encoding);
if(old!=null && !old.trim().equals("")){
File file = new File(new StringBuffer(basePath).append("/").append(item.getString(encoding)).toString());
if(file.exists())file.delete();
}
}
continue;
}
String name = item.getName();
long size = item.getSize();
model.setSize(size);
if (size == 0) {
continue;
}
if(name==null || name.equals(""))
continue;
//System.out.println(name);
if(name.indexOf("\\")!=-1){
name = name.substring(name.lastIndexOf("\\") + 1);
}else if(name.indexOf("/")!=-1){
name = name.substring(name.lastIndexOf("/")+1);
}
fileDirectoryCreator.put("oriName", name.substring(0, name.lastIndexOf(".")));
model.setExt(name.substring(name.lastIndexOf(".")));
uploadFile = item;
}
Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String value = request.getParameter(name);
if(value!=null && !value.trim().equals(""))fileDirectoryCreator.put(name, value);
}
String fileDirectory = fileDirectoryCreator.createFileDirectory();
String dir = new StringBuffer(basePath).append(fileDirectory).toString();
String path = new StringBuffer(fileDirectory).append(fileDirectoryCreator.createFileName()).toString();
if (!new File(dir).exists()) {
new File(dir).mkdirs();
}
String title = model.getParams().get("title");
if(title!=null && !title.trim().equals("")){
path = new StringBuffer(fileDirectory).append(title).toString();
}else{
path = new StringBuffer(fileDirectory).append(fileDirectoryCreator.createFileName()).toString();
}
image = new StringBuffer(path).append(model.getExt()).toString();
File file = new File(new StringBuffer(basePath).append(image).toString());
int index = 1;
while(file.exists()){
image = new StringBuffer(path).append("(").append(index).append(")").append(model.getExt()).toString();
file = new File(new StringBuffer(basePath).append(image).toString());
++index;
}
model.setPath(image);
if(uploadFile!=null)uploadFile.write(file);
} catch (Exception e) {
e.printStackTrace();
}
return model;
}
}
分享到:
相关推荐
commons-fileupload-1.2.1.jar包;commons-lang-2.3.jar,在使用组件实现文件上传时候要注意前后台的一致性,注意在后台定义File文件对象名要与jsp页面中的file标签name名字一致,前台form标签属性一定要设置为...
使用commons-fileupload上传文件 使用commons-fileupload上传文件
用commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar组件,可实现 上传
commons-fileupload-1.2.2-bin.zip一个文件上传的第三方插件
commons-fileupload-1.3.2.jar和commons-io-2.5.jar
commons-fileupload-1.3.jar和commons-io-1.2.jar
java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载
commons-fileupload-1.2.1.jar和...commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 案例上传: http://hi.baidu.com/lichao77821/blog commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar apache 常用的包。
文件上传两个jar包commons-fileupload-1.3.1和commons-io-2.4,也是现在用的最多的两个jar包。
commons-fileupload-1.3.1库文件下载,用于实现文件上传
明明只是几个jar包,其他资源真坑爹,可惜不能设为0资源分! commons-fileupload-1.3.3.jar commons-io-2.5.jar 利用这两个jia包完成资源上传功能
java实现文件保存,接收所需的jar包,(commons-fileupload-1.2.1.jar,commons-io-2.0.1.jar),亲测可用
Apache的commons-fileupload.jar可方便的实现文件的上传功能
上传下载所需jar包,commons-fileupload-1.3.1.jar和commons-io-2.4.jar
commons-fileupload和commons-io实现的上传,并通过ajax实现(进度条)
commons-fileupload apache开源项目,实现文件上传下载功能 ssh上传时必配
利用servlet实现的commons-fileupload的实例。也就是文件上传实例。
commons-fileupload-1.2.jar commons-io-1.3.1.jar
commons-fileupload-1.2.2.jar是一款可以实现文件上传功能的jar依赖包,一般进行应用开发的朋友会用到这个开发包,下载后放到应用程序的WEB-INF\lib下就可以正常使用了,有从事web开发的朋友不要错过。
commons-fileupload-1.1.1.jar commons-io-1.2.jar上传文件jar包