文件上传

控制层处理:

// 转型为MultipartHttpRequest(重点的所在)

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得第1张图片(根据前台的name名称得到上传的文件)
MultipartFile userImg_file = multipartRequest.getFile("headImgs");

Map<String, Object> uploadMap = ImageUpload.uploadFile(request,userImg_file);
if ((int) uploadMap.get("status") == 1) {

// System.out.println(uploadMap.get("data"));

//得到文件的保存路径

String field_value =  (String) uploadMap.get("data");
// dataMap.put(field_name, field_value);

//  userInfoBean.setHeadImg(field_value);

工具类:

package com.cxy.template.util;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

/**
 * 图片上传:http://www.cnblogs.com/WarBlog/p/4838255.html
 * @author Linlm
 *
 */
public class ImageUpload {
static Logger logger = Logger.getLogger(ImageUpload.class);
public static boolean makeDirs(String filePath) {
        String folderName = filePath;
        if (folderName == null || folderName.isEmpty()) {
            return false;
        }
 
        File folder = new File(folderName);
        return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();
    }
public static Map<String, Object> uploadFile(HttpServletRequest request,MultipartFile file){
/*
* 返回的map中status的含义:1-上传成功;0-创建图片文件夹失败;-1-图片过大;-2-文件不是图片格式;-3-图片编码错误;-4-没有传入图片
*/
Map<String, Object> map = new HashMap<String, Object>();
 
//上传路径,本来是相对路径,等到发布到Linux环境中,通过配置文件修改路径为Linux中的资源地址【防止工程删除而资源文件不会丢失】,重新发布工程时把我们资源文件导入工程项目。
//        String filePath = request.getSession().getServletContext().getRealPath("/images/")+DateFormat.getCurTime();
// System.out.println(filePath);
String filePath = "E:\\images\\"+DateFormat.getCurTimeDay();
System.out.println(filePath);
makeDirs(filePath);
//System.out.println(makeDirs(filePath));
        int size = 15; //上传图片不能大于3M
         
        long maxFileSize = (Integer.valueOf(size)) * 1024 * 1024;
        if(file != null && file.getOriginalFilename().length()>0){
        String suffix = file.getOriginalFilename().substring(
                file.getOriginalFilename().lastIndexOf("."));
        long fileSize = file.getSize();
       
        if (suffix.equals(".png") || suffix.equals(".jpg") || suffix.equals(".gif")|| suffix.equals(".JPG")) {
            if (fileSize < maxFileSize) {
//                 System.out.println("fileSize:"+fileSize);
                String fileName = DateFormat.getCurTimeLong()+Math.random()*1000+suffix;
                System.out.println(fileName);
                try {
fileName = new String(fileName.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e1) {
map.put("status", -3);
                    map.put("data", "图片编码错误!");
}
                File tempFile = new File(filePath, fileName);
 
                try {
                    if (!tempFile.getParentFile().exists()) {
                        tempFile.getParentFile().mkdirs();//如果是多级文件使用mkdirs();如果就一层级的话,可以使用mkdir()
                    }
                    if (!tempFile.exists()) { 
                        tempFile.createNewFile();
                    }
                    file.transferTo(tempFile);
                } catch (Exception e) {
                map.put("status", 0);
                    map.put("data", "创建图片文件夹失败!");
                    
                logger.error("图片上传失败!"+e.getMessage());
                }
 
                map.put("status", 1);
                map.put("data", "images/"+DateFormat.getCurTimeDay()+"/"+ tempFile.getName());
 
            } else {
                map.put("status", -1);
                map.put("data", "Image too big");
            }
 
        } else {
            map.put("status", -2);
            map.put("data", "Image format error");
        }
        }else{
        map.put("status", -4);
            map.put("data", "no image");
        }    
        return map;
    }
}

http://blog.youkuaiyun.com/niuch1029291561/article/details/17377903

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值