spring mvc上传单张图片功能

/**
* 上传照片
* @return
*/
@RequestMapping(value="weixin/uploadCollectImg")
@ResponseBody
public Response uploadCollectImg(HttpServletRequest request)
{
try
{
         //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(request.getSession().getServletContext());
        //检查form中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request))
        {
        ShiroHttpServletRequest shiroRequest = (ShiroHttpServletRequest) request;
        //将request变成多部分request
        MultipartHttpServletRequest multiRequest = multipartResolver.resolveMultipart((HttpServletRequest) shiroRequest.getRequest());  
           //获取multiRequest 中所有的文件名
            Iterator iter=multiRequest.getFileNames();
            if(!iter.hasNext())
            {
            return Response.error("-1", "文件为空");
            }
           MultipartFile pic=multiRequest.getFile(iter.next().toString());
        //文件原始名称
        String fileOrginName=pic.getOriginalFilename();
        String contentType=pic.getContentType();
        if(!checkFile(fileOrginName)||!checkFileType(contentType))
        {
        return Response.error("-2","文件格式不对,支持jpg,jgeg,png");
        }
        String year=String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
        String rel_path="upload/collectImg/"+year;
        String pic_dir=request.getSession().getServletContext().getRealPath(rel_path);
        File dir=new File(pic_dir);
        if(!dir.exists())
        {
        dir.mkdirs();
        }
        String newFileName=CommonUtil.generateUUID().replace("-", "").toLowerCase();//uuid唯一文件名
        String suffix=fileOrginName.substring(fileOrginName.lastIndexOf("."), fileOrginName.length());//后缀名
        File newFile=new File(pic_dir+"/"+newFileName+suffix);
        pic.transferTo(newFile);
        Response response=new Response();
        response.put("code", "0");
        response.put("msg", "文件上传成功");
        response.put("picPath", rel_path+"/"+newFileName+suffix);
        return response;
       
        }else
        {
        return Response.error("-3","form中没有enctype='multipart/form-data'");
        }
} catch (Exception e)
{
e.printStackTrace();
return Response.error("500", "后台系统异常",e.getMessage());
}
}

/**
     * 通过文件名判断是否为允许的上传文件类型,true表示允许
     */
    private boolean checkFile(String fileName) {
        //设置允许上传文件类型
        String suffixList = "jpg,png,jpeg";
        // 获取文件后缀
        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
        if (suffixList.contains(suffix.trim().toLowerCase())) {
            return true;
        }
        return false;
    }
    
    /**
     * 通过contenttype判断是否为图片
     */
    private boolean checkFileType(String contentType) {
        //设置允许上传文件类型
        List<String> media=Arrays.asList(new String[]{"image/jpeg","image/png","iamge/jpg"});
        if (media.contains(contentType.trim().toLowerCase())) {
            return true;
        }
        return false;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值