码迷,mamicode.com
首页 > Web开发 > 详细

文件上传

时间:2016-04-01 18:01:56      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

原创链接:http://www.cnblogs.com/yanqin/p/5345562.html 

html代码  index.jsp

<form action="shangchuan.jsp" method="post" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit" value="上传">
	</form>

java 代码 : shangchuan.jsp

<%@page import="org.apache.struts2.json.JSONUtil"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	FileItemFactory factory =  new DiskFileItemFactory();
	ServletFileUpload upload = new ServletFileUpload(factory);
	//设置上传文件大小
	long maxSize = 10 * 1024 * 1024;
	upload.setSizeMax(maxSize);
	//拿到传过来的所有数据
	List<FileItem> items = upload.parseRequest(request);
	
	
	List<Map<String,Object>> maps = new ArrayList<Map<String,Object>>();
	//设置上传文件的路径
	String path = request.getRealPath("resource/"+"123");
	//遍历items
	for(FileItem item : items){
		//判断是不是 普通表单元素
		if(item.isFormField()){
			/*	在form表单那里,将enctype设置成用二进制传输后,无法在用getPararmeter获得普通元素的值,要用如下方法。
				
				//拿到 普通表单元素的名字
				String name = item.getFieldName();
				//判断是不是 我要的 表单元素
				if(name.equals("username")){
					String value = item.getString();
				}
			*/
		}else{
			//判断是不是真的上传文件了
			if(item.getName()=="" || item.getSize() == 0){
				return;
			}else{
				//如果上传的目录不存在,就创建
				File rootPath = new File(path);
				if(!rootPath.exists()){
					rootPath.mkdirs();
				}
				//获取上传文件的后缀
				String fileName = item.getName();
				String ext = getExt(fileName);
				long fileSize = item.getSize();
				
				//生成文件名
				String fname = UUID.randomUUID().toString()+ext;
				
				//上传文件
				rootPath = new File(path,fname);
				item.write(rootPath);
				
				//返回这次上传的相关信息
				String fpath = "resource/"+"123";
				Map<String,Object> map = new HashMap<String,Object>();
				map.put("name",fileName);
				map.put("size",fileSize);
				map.put("sizeString", fileSize+"字节");
				map.put("url",fpath);
				maps.add(map);
			}
		}
		out.print(JSONUtil.serialize(maps));
		
	}
	
%>
<%!
	//根据名字 得出后缀名
	public String getExt(String name){
		return name.substring(name.lastIndexOf("."), name.length());
	}
%>

  

文件上传

标签:

原文地址:http://www.cnblogs.com/yanqin/p/5345562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!