基于struts2的文件上传功能简单介绍


1.具体使用commons-fileupload组件完成文件的上传操作.

I. 搭建环境:加入
	commons-fileupload-1.3.2.jar
	commons-io-2.2.jar
II. 基本思想:
    > commons-fileupload-1.3.2.jar:可以解析请求,得到一个FileItem对象组成的List
    > commons-fileupload-1.3.2.jar:把所有的请求信息都解析稳FileItem对象,无论是一个文本域
    还是一个文件域,都是解析成一个FileItem对象.
    > 可以调用FileItem对象的isFormField()方法来判断是一个表单域或不是表单域(文件域)
    > 再来进一步获取信息
    
    if(item.isFormField()){
    	String name = item.getFieldName();
    	String value = item.getString();
    	...
    }
    
    if(!item.isFormField()){
    	String fieldName = item.getFieldName();
    	String fileName = item.getName();
    	String contentType = item.getContentType();
    	boolean isInMemory = item.isInMemory();
    	long sizeInBytes = item.getSize();
    	
    	InputStream uploadedStream = item.getInputStream();
    	...
    	uploadedStream.close();
    }
    
III.如何得到List<FileItem>对象.

	>简单的写法
	
	FileItemFactory factory = new DiskFileItemFactory();
	ServletFileUpload upload = new ServletFileUpload(factory);
	List<FileItem> items = upload.parseRequest(request);
	
	>复杂的写法: 可以被文件的上传加入一些限制条件和其他的属性
	
	DiskFileItemFactory factory = new DiskFileItemFactory();
	
	//设置内存中最多可以存放的上传文件的大小,若超出则把文件写到一个临时的文件夹中,
	以byte为单位
	factory.setSizeThreshold(yourMaxMemorySize);
	//设置临时文件夹
	factory.setRepository(yourTempDirectory);
	
	ServletFileUpload upload = new ServletFileUpload(factory);
	//设置上传文件的总的大小
	upload.setSizeMax(yourMaxRequestSize);
	
	List<FileItem> items = upload.parseRequest(request);
    
    
    

猜你喜欢

转载自blog.csdn.net/qq_41700374/article/details/81609649
今日推荐