DiskFileItemFactory
- 需要先导入包: commons-fileupload-1.2.1.jar
构造方法等等
构造方法
1) public DiskFileItemFactory()
采用默认临界值和系统临时文件夹构造文件项工厂对象。
2) public DiskFileItemFactory(int sizeThreshold,File repository)
采用参数指定临界值和系统临时文件夹构造文件项工厂对象。
3) FileItem createItem()
根据DiskFileItemFactory相关配置将每一个请求消息实体项目创建成DiskFileItem 实例,并返回。该方法从来不需要我们亲自调用,FileUpload组件在解析请求时内部使用。
等等……
//创建上传文件对象工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建上传文件对象
ServletFileUpload upload = new ServletFileUpload(factory);
//使用上传文件对象去解析Request请求中的所有内容
//返回值是一个List集合,里面装着上传的8个字段内容,每一个字段内容被封装成了FileItem对象
//从请求中获取参数
List<FileItem> list = upload.parseRequest(request);
//遍历
for (FileItem fileItem : list) {
//判断是否 为 非上传文件字段
if(fileItem.isFormField()){
//获得名字
String fieldName = fileItem.getFieldName();
//获得名字
String fieldValue = fileItem.getString("UTF-8");
//封装数据
map.put(fieldName, fieldValue);
}else{
//否则就是 上传文件
String fieldName = fileItem.getFieldName();
String fileName = fileItem.getName();
String fieldValue = "products/1/"+fileName;
//封装数据
map.put(fieldName, fieldValue);
//以下代码完成上传文件
InputStream is =fileItem.getInputStream();
OutputStream os = new FileOutputStream("H:\\MyEclipse\\MyEclipse Professional 2014\\Workspaces\\MyEclipse Professional 2014\\day55-01-heimaShopBackV1.0-JavaEE77\\WebRoot\\products\\1\\"+fileName);
//复制文件
IOUtils.copy(is, os);
//关闭流
IOUtils.closeQuietly(os);
IOUtils.closeQuietly(is);
}
}
检查图片的格式是否正确,同时实现预览
<script type="text/javascript">
//检查图片的格式是否正确,同时实现预览
function setImagePreview(obj, localImagId, imgObjPreview) {
var array = new Array('gif', 'jpeg', 'png', 'jpg', 'bmp'); //可以上传的文件类型
if (obj.value == '') {
$.messager.alert("让选择要上传的图片!");
return false;
}
else {
var fileContentType = obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //这个文件类型正则很有用
////布尔型变量
var isExists = false;
//循环判断图片的格式是否正确
for (var i in array) {
if (fileContentType.toLowerCase() == array[i].toLowerCase()) {
//图片格式正确之后,根据浏览器的不同设置图片的大小
if (obj.files && obj.files[0]) {
//火狐下,直接设img属性
imgObjPreview.style.display = 'block';
imgObjPreview.style.width = '50px';
imgObjPreview.style.height = '50px';
//火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
imgObjPreview.src = window.URL.createObjectURL(obj.files[0]);
}
else {
//IE下,使用滤镜
obj.select();
var imgSrc = document.selection.createRange().text;
//必须设置初始大小
localImagId.style.width = "50px";
localImagId.style.height = "50px";
//图片异常的捕捉,防止用户修改后缀来伪造图片
try {
localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader=").src = imgSrc;
}
catch (e) {
$.messager.alert("您上传的图片格式不正确,请重新选择!");
return false;
}
imgObjPreview.style.display = 'none';
document.selection.empty();
}
isExists = true;
return true;
}
}
if (isExists == false) {
$.messager.alert("上传图片类型不正确!");
return false;
}
return false;
}
}
</script>