package com.utils;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* 流操作
* */
public class FileUtil {
/**
* 读取form提交的二进制流
* */
public static Map<String,Object> FileUpload(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> items = upload.parseRequest(request);
Iterator it= items.iterator();
while(it.hasNext()){
DiskFileItem item = (DiskFileItem) it.next();
if(item.isFormField()){
//如果是表单域
map.put(item.getFieldName(),item.getString("UTF-8"));
}else{
//如果是文件
//截取绝对路径
map.put("productpictureurl", item.getStoreLocation().getPath());//本地路径
}
}
} catch (FileUploadException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;
}
}
HTML:
<form id= "uploadForm">
<p >指定文件名: <input type="text" name="filename" value= ""/></p >
<p >上传文件: <input type="file" name="file"/></ p>
<input type="button" value="上传" onclick="doUpload()" />
</form>
AJAX:
function doUpload() {
var formData = new FormData($( "#uploadForm" )[0]);
$.ajax({
url: 'http://localhost:8080/cfJAX_RS/rest/file/upload' ,
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert(returndata);
},
error: function (returndata) {
alert(returndata);
}
});
}