日期:2014-05-16  浏览次数:20831 次

Ext ajax 上传文件
页面代码
<form id="upForm">
		请选择文件:<input type="file" name="file1"><br /> 文件描述:
		<textarea cols="70" rows="5" name="desc"></textarea>
		<br /> <input type="button" id="btn" value="上传">
	</form>

	<script type="text/javascript">
		Ext.onReady(function() {
			Ext.MessageBox.alert("测试", "测试Ext是否运行");
			Ext.get("btn").on("click", function() {
				Ext.Ajax.request({
					url : "FileUpServlet",
					isUpload : true,
					form : "upForm",
					success : function(response) {
						Ext.MessageBox.alert("上传成功", response.responseText);
					}
				});
			});
		});
	</script>

后台servlet代码
public class FileUpServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public FileUpServlet() {
		super();
	}

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		ServletContext ctx = this.getServletContext();
		String userFilePath = ctx.getRealPath("userFile");

		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setSizeThreshold(1024 * 1024);
		factory.setRepository(new File(userFilePath));

		ServletFileUpload upload = new ServletFileUpload(factory);
		upload.setSizeMax(10 * 1024 * 1024);

		try {

			List<FileItem> fileItems = upload.parseRequest((HttpServletRequest) request); 
			System.out.println(fileItems.size());
			Iterator<FileItem> iter = fileItems.iterator();

			while (iter.hasNext()) {
				FileItem fi = iter.next();

				if (fi.isFormField()) {

					String fieldName = fi.getFieldName();
					String fieldvalue = fi.getString(); 

					System.out.println("name:" + fieldName);
					System.out.println("value:" + fieldvalue);
				} else {
					String filePath = fi.getName();
					if (filePath != null) {
						System.out.println(filePath);
					}
					if (StringUtil.isBlank(filePath)) {
						continue;
					}
					String extensionName = filePath.substring(
							filePath.lastIndexOf("."), filePath.length());
//					String contentType = fi.getContentType();
//					boolean isInMemory = fi.isInMemory();
//					long sizeInBytes = fi.getSize();

					String url = userFilePath +"\\"+ StringUtil.getUUID()
							+ extensionName;
					File uploadedFile = new File(url);
					if (!uploadedFile.exists()) {
						uploadedFile.getParentFile().mkdirs();
					}

					fi.write(uploadedFile);
				}
			}
			
			PrintWriter out = response.getWriter();
			out.print("创建成功");
			out.flush();
			out.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}