springMVC4.0图片显示与文件下载

客户端与手机端公用,图片返回流


@RequestMapping(value = "/download")
    @ResponseBody
    public void download(
            String id,String type,@RequestParam(value = DEFAULT_JQUERY_JSONP_CALLBACK_PARAM_NAME, required = false) String callbackName,
            HttpServletResponse response) throws IOException {
        if (StringUtils.isNotEmpty(id) && StringUtils.isNotEmpty(type)) {
            HttpHeaders headers = new HttpHeaders();
            File file = null;
            if ("real".equals(type)) {
                com.miracle.mby.core.entity.File fileModel = fileService.getFilesByMd5(id);
                if (null != fileModel) {
                    Dict dict = fileService.getUploadFileDict();
                    headers.setContentDispositionFormData("attachment", new String(fileModel.getOrginName().getBytes("UTF-8"), "ISO8859-1"));
                    file = new File(dict.getValue() + fileModel.getPath());

                }
            } else if ("temp".equals(type)) {
                file = FileUtils.getTempUploadFile(id);
                if (file == null) {
                    logger.warn("资源不存在%s", id);
                } else {
                    headers.setContentDispositionFormData("attachment", new String(file.getName().getBytes("gbk"), "ISO8859-1"));
                }
            }
            if (FileUtils.isImage(file)) {
                response.setHeader("Accept-Ranges", "bytes");
                response.setHeader("Pragma", "no-cache");
                response.setHeader("Cache-Control", "no-cache");
                response.setDateHeader("Expires", 0);

            }else{
                response.setContentType("application/octet-stream");
                response.setHeader("Accept-Ranges", "bytes");
                response.setHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("gbk"), "ISO8859-1"));

            }
            if(file.exists()){
                FileInputStream inputStream = new FileInputStream(file);
                response.setHeader("Content-Length", String.valueOf(file.length()));
                byte[] bos = IOUtils.read(inputStream);
                OutputStream out = null;
                out = response.getOutputStream();
                out.write(bos);
                out.flush();
                out.close();
                inputStream.close();
            }

        }
    }


是否是图片

public static boolean isImage(File file){
        if(file.isDirectory()){
            return false;
        }
        String fileName = file.getName();
        int len = fileName.indexOf(".");
        String imagesPattern  = fileName.substring(len+1,fileName.length()).toLowerCase();
        if("jpg".equals(imagesPattern)){
            return true;
        }else if("bmp".equals(imagesPattern)){
            return true;
        }else if("gif".equals(imagesPattern)){
            return true;
        }else if("psd".equals(imagesPattern)){
            return true;
        }else if("pcx".equals(imagesPattern)){
            return true;
        }else if("png".equals(imagesPattern)){
            return true;
        }else if("dxf".equals(imagesPattern)){
            return true;
        }else if("cdr".equals(imagesPattern)){
            return true;
        }else if("ico".equals(imagesPattern)){
            return true;
        }else if("bmp".equals(imagesPattern)){
            return true;
        }else if("jpeg".equals(imagesPattern)){
            return true;
        }else if("svg".equals(imagesPattern)){
            return true;
        }else if("wmf".equals(imagesPattern)){
            return true;
        }else if("emf".equals(imagesPattern)){
            return true;
        }else if("eps".equals(imagesPattern)){
            return true;
        }else if("tga".equals(imagesPattern)){
            return true;
        }else if("nef".equals(imagesPattern)){
            return true;
        }else if("tif".equals(imagesPattern)){
            return true;
        }else if("tiff".equals(imagesPattern)){
            return true;
        }else{
            return false;
        }

    }



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值