DiskFileItemFactory文件上传

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>

猜你喜欢

转载自blog.csdn.net/kato_op/article/details/80214573