springmvc上传图片的处理

原创 2015年07月10日 13:25:58
/**
*上传请求方法springmvc上传图片(有还是(在没有返回值时默认none))的处理
*@param myfilename
*/
@RequestMapping(value = "/uploadresouce", method = RequestMethod.POST)@ResponseBodypublic String doUploadMyResouce( @RequestParam(value = "myfilename", required = false,
defaultValue = ValueConstants.DEFAULT_NONE) MultipartFile myfilename){
/
 /**文件原名**/
    String imageName = "";
    /**新文件名称由当前项目路径和上传文件路径和文件后缀名组成**/
    String filePath = "";
    /**上传成功与否标示符**/
    String returninfo = "error";
    /**构建图片保存的目录**/
    String logoPathDir = "/WEB-INF/Upload";
    /**得到图片保存目录的真实路径**/
    String logoRealPathDir = request.getSession().getServletContext().getRealPath(logoPathDir);
    if (color_icon == null) {
      /**没有上传图片文件**/
this.myservice.doUpload(""); returninfo =GlobalConfig.SUCCESS; } else { String logImageName = color_icon.getOriginalFilename(); //检查文件后缀是否符合图片类型 boolean checkFileType = FileUtil.checkFileType(logImageName, true); //判断上传文件是否是图片 boolean isImg = this.isimg(color_icon); if (checkFileType && isImg) { //文件原名 imageName = color_icon.getOriginalFilename(); //新文件名称由当前项目路径和上传文件路径和文件后缀名组成 //UUID)加密名称 filePath = String.valueOf(UUID.randomUUID().toString().replaceAll("-", "") + "." + imageName.split("\\.")[1]); //构建图片保存的目录logoRealPathDir String urlimage = logoRealPathDir + "\\" + filePath;
            this.myservice.doUpload(urlimage );
            //根据真实路径创建目录
            File logoSaveFile = new File(logoRealPathDir);
            //是否新建保存文件夹
            if (!logoSaveFile.exists()) {
                logoSaveFile.mkdirs();
            }
            //上传文件
            SaveFileFromInputStream(color_icon.getInputStream(), logoRealPathDir, filePath);
            returninfo =GlobalConfig.SUCCESS;
        }
    }
    return returninfo;
}
------------------------------------------------------------------------------------
/**
 * 上传文件
 *
 * @param is
 * @param path
 * @param filePath
 * @throws IOException
 */
public void SaveFileFromInputStream(InputStream is, String path, String filePath) throws IOException {
    FileOutputStream fs = new FileOutputStream(path + "/" + filePath);
    byte[] buffer = new byte[1 * 1024];
    int byteread = 0;
    while ((byteread = is.read(buffer)) != -1) {
        fs.write(buffer, 0, byteread);
        fs.flush();
    }
    fs.close();
}

/**
 * 判断上传的文件是否为图片
 *
 * @param multipartFile
 * @return
 */
public static boolean isimg(MultipartFile multipartFile) {

    InputStream is = null;
    try {
        is = multipartFile.getInputStream();
        byte[] bt = new byte[2];
        is.read(bt);
        // 获取16进制文件头
        String hex = new BytesUtil().bytesToHexString(bt);
        String fileType = FileUtil.getFileType(multipartFile.getOriginalFilename());
        // 判断图片对应的16进制头
        if (fileType.equals(".jpg")) {
            if (hex.equals("ffd8")) {
                return true;
            }
        }
        if (fileType.equals(".gif")) {
            if (hex.equals("4749")) {
                return true;
            }
        }
        if (fileType.equals(".png")) {
            if (hex.equals("8950")) {
                return true;
            }
        }
        if (fileType.equals(".bmp")) {
            if (hex.equals("424d")) {
                return true;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (is != null) {
                is.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return false;
}
-------------------------------------------
FileUtil,BytesUtil工具类
-----------------------------------------
-----------------FU----------
public class FileUtil {
    /**允许上传的图片类型**/
    public static final String IMG_TYPE = ".jpg|.gif|.png|.bmp";
    /**允许上传的所有文件类型**/
    public static final String ALL_TYPE = ".jpg|.jepg|.gif|.png|.bmp|.gz|.rar|.zip|.pdf|.txt|.swf|.mp3|.jar|.apk|.ipa";

    /**
     * 检测文件大小
     * @param file 文件
     * @param kb 限制大小
     * @return true 超过限制
     */
    public static boolean checkFileSize(File file, int kb){
        long size = file.length();
        if (size > 1024 * kb) {
            return true;
        }
        return false;
    }

    /**
     * 检查文件类型
     * @param fileName 文件名
     * @param isImg 是否检查图片
     * @return true=后缀合法
     * @throws
     */
    public static boolean checkFileType(String fileName, boolean isImg) {
        String fileType = getFileType(fileName);
        if (isImg) {
            return IMG_TYPE.indexOf(fileType.toLowerCase()) != -1;
        } else {
            return ALL_TYPE.indexOf(fileType.toLowerCase()) != -1;
        }
    }

    /**
     * 获取文件类型
     * @param fileName
     * @throws
     */
    public static String getFileType(String fileName) {
        return fileName.substring(fileName.lastIndexOf("."), fileName.length());
    }

    public static void main(String[] args) {
        String s = getFileType("12321.jpg");
        System.out.println(s);
    }
}

----------------BU----------
public class BytesUtil {
    /**
     * Convert byte[] to hex string. 把字节数组转化为字符串
     * 这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。
     * @param src byte[] data
     * @return hex string
     */
    public static String bytesToHexString(byte[] src){
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv+"");
        }
        return stringBuilder.toString();
    }
    /**
     * Convert hex string to byte[]   把为字符串转化为字节数组
     * @param hexString the hex string
     * @return byte[]
     */
    public static byte[] hexStringToBytes(String hexString) {
        if (hexString == null || hexString.equals("")) {
            return null;
        }
        hexString = hexString.toUpperCase();
        int length = hexString.length() / 2;
        char[] hexChars = hexString.toCharArray();
        byte[] d = new byte[length];
        for (int i = 0; i < length; i++) {
            int pos = i * 2;
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
        }
        return d;
    }
    /**
     * Convert char to byte
     * @param c char
     * @return byte
     */
    private static byte charToByte(char c) {
        return (byte) "0123456789ABCDEF".indexOf(c);
    }
}
-------------页面---------
<form  method="POST" enctype="multipart/form-data" 
class="form-horizontal" id="UploadForm" name="UploadForm">
<input type="file" id="myfilename" name="myfilename" >


版权声明:本文为博主书香代码原创文章,未经博主允许不得转载。

相关文章推荐

springMVC注解上传图片公共类

springMVC注解上传图片公共类,不用写多余的代码 一句话就可以上传

springmvc上传图片

第一步配置springmvc.xml文件并加入jra包 第二步配置开发工具myeclipse的图片上传的虚拟路劲有一下两种方法 第三步,代码...

SpringMVC+kindEditor批量上传图片详细解析

项目中实用的Kindeidtor批量上传图片

KingEditor结合SpringMVC上传图片

1.在官网上下载压缩包解压后放入项目下,在使用编辑器的压面导入js脚本: 2.在需要使用编辑器的地方加入下代码     //初始化编辑器 var editor;       ...

springMVC上传图片,前台JS ,后台JAVA

注意: 前台需要用JSON串处理, 在js传递参数中含加号(+)的处理方式 一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字...

springMVC学习笔记---day04-上传图片、JSON转对象、校验、全局异常、拦截器、静态资源

一:使用springmvc上传图片 二:JSON和对象之间的相互转化 三:springmvc的校验 四:restful风格的开发 五:全局异常处理

SpringMVC预览上传图片功能的实现

SpringMVC预览上传图片基于SSM(spring,springmvc,mybatis)开发项目已经成为一种趋势, 其中图片以及文件的上传又是在项目中必不可缺的功能,下面我们着重研究基于Sprin...

SpringMvc上传图片

多文件自定义文件夹上传图片 JSP页面 上传资料 营业执照 组织机构 Controllerpubli

异步上传图片 springmvc的MultipartFile和jersey的使用

首先上传文件的框框所在的表单 上传文件的关键代码<img width="100" height="100" id="a
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)