java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料

保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。

简述:
使用了FileItem,对网页端 带有字段的Input文本 ,所以会有nameValuePair这个map的存在
以及文件上传做处理,
知识点
1. 后台文件夹杂表单字段上传的解析,以及文件的本地保存
2. 前端JS一些常用函数,包括url解析,获取contextPath, 简单的正则解析带一层标签的文本(用于解析

JSON Str

格式)
3. jquery选择器的简单试用
后台实现主要代码:
view
plaincopy
/**
* 文件上传表单处理,保存文件的路径, 同时记录表单内的值对
* @param request
* @param childPath 项目部署到服务器,存储的子路径
* @param nameValuePair 存放名字值对
* @return
*/
protected String saveUploadFile(HttpServletRequest request, final String childPath,
Map nameValuePair){
//文件在服务器保存的路径
String path = null;
//外部访问路径
String fileSuffix = null;
String fileName = null;
//判断提交过来的表单是否为文件上传菜单
boolean isMultipart= ServletFileUpload.isMultipartContent(request);
if(isMultipart){
//构造一个文件上传处理对象
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
Iterator items;
try{
//解析表单中提交的所有文件内容
items = upload.parseRequest(request).iterator();
while(items.hasNext()){
FileItem item = (FileItem) items.next();
if(!item.isFormField()){
//取出上传文件的文件名称
String name = item.getName();
//取得上传文件以后的存储路径
fileSuffix = name.substring(name.lastIndexOf('.'), name.length());
//时间到微秒取 文件名
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmssSSS");
fileName = sdf.format(new Date());
//上传文件以后的存储路径
String saveDir = this.getServletContext().getRealPath(childPath);
if (!(new File(saveDir).isDirectory())){
new File(saveDir).mkdir();
}
path = saveDir + File.separatorChar + fileName + fileSuffix;
//上传文件
File uploaderFile = new File(path);
item.write(uploaderFile);
}else{
String name = item.getFieldName();
String value = item.getString( "UTF-8");
nameValuePair.put(name, value);
logger.info("name: " + name +"\nvalue: " + value );
}
}
}catch(Exception e){
e.printStackTrace();
return null;
}
}
//返回客户端访问的地址
String requestUrl = nameValuePair.get("contextPath") + childPath + fileName + fileSuffix;
return requestUrl;
}
前端Javascript代码部分,现只在chrome上调试,firefox上传的回调函数success还是有问题:
在编程过程中发现试用ajaxFileUpload.js文件上传库在返回的时候自带 标签,所以filetype: text, 对返回的文本在转JSON后显示
view
plaincopy


图片上传