利用spring 文件上传

1 web.xml

 

  

       EncodingFilter

       org.springframework.web.filter.CharacterEncodingFilter

      

            encoding

            utf-8

      

  

 

       EncodingFilter

       *.do

 

 

 

       SpringMVC

       org.springframework.web.servlet.DispatcherServlet

      

           contextConfigLocation

           classpath:applicationContext.xml

      

 

 

       SpringMVC

       *.do

 

2 applicationContest.xml

   

       

       

            

   

   

       

         maxUploadSize" value="1024000">

         resolveLazily" value="true">

   

upload.jsp


文件上传



     

     

     

show.jsp


 

好看吗


 

---------------------------------------------------------------------------------

Md5Util

package com.xdl.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Util {

    public static String md5Str(String data){
        StringBuffer strBuf = new StringBuffer();
        
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] databytes = data.getBytes();
            md.update(databytes);
            //获取经过MD5算法处理之后的字节码
            byte[] md5Bytes = md.digest();
            System.out.println(md5Bytes.length);
            //如何把一个16长度的byte数组变成32位长度的16进制形式
            
            for(int i = 0;i < md5Bytes.length;i++){
                byte b = md5Bytes[i];
                //一个byte等于8bit 4bit可以表达成一个位16进制
                //变成16进制形式时最长是两位
                String tempStr = Integer.toHexString(b&0xff);
                
                if(tempStr.length()<2){
                    tempStr = "0"+tempStr;    
                }
                strBuf.append(tempStr);     
            }
        } catch (NoSuchAlgorithmException e) {
            
            e.printStackTrace();
        }
        return strBuf.toString();
    }
    /**加盐*/
    
    public static String md5StrSalt(String data,String salt){
        data = data + salt;
        StringBuffer  strBuf = new StringBuffer();
        
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] databytes = data.getBytes();
            md.update(databytes);
            // 获取经过md5 算法处理之后的字节码
            byte[]   md5Bytes = md.digest();
            System.out.println(md5Bytes.length);
            // 如何把 一个 16 长度的byte 数组 变成32 位长度的16进制形式
            for(int i=0;i                 byte b = md5Bytes[i];
                // 一个byte 等于 8bit  4bit 可以表达成一个位16进制 
                // 变成16进制形式时 最长是两位 
                String  tempStr = Integer.toHexString(b&0xff); 
                //System.out.println(tempStr);
                if(tempStr.length() < 2){
                    tempStr = "0"+tempStr;
                }
                strBuf.append(tempStr);
            }
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return  strBuf.toString();
    }
}
 

-----------------------------------------------------------------------------------

package com.xdl.controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import com.xdl.util.Md5Util;

@Controller
public class FileUploadController {
    @RequestMapping("/toUpload.do")
    public  String  toUpload(){
        return  "upload";
    }
    @RequestMapping("/upload.do")
    public  String  upload(MultipartFile  mf,String username,
        HttpServletRequest request){
        /**"/guoaj/home/"**/
        //文件名+大小+文件
        System.out.println(mf.getOriginalFilename() + ":" + mf.getSize() 
         + ":" +username);
        //获取服务器文件上传的真实路径  然后根据用户id 和 当前系统时间构建一个文件名
        // 保存文件的相对路径 或者 绝对路径 
        String  realPath = request.getServletContext().getRealPath("datas");
        System.out.println(realPath); 
        //原文件名
        String oriFileName = mf.getOriginalFilename();
        // 获取后缀
        String  suffix = oriFileName.substring(oriFileName.lastIndexOf("."));
        //打印后缀
        System.out.println("suffix:"+suffix);
        String fileName = username + "_" + System.currentTimeMillis()
           +"_"+Md5Util.md5Str(mf.getOriginalFilename())+suffix;
        // 构建一个磁盘真实文件 
        System.out.println(fileName);
        File  file = new File(realPath + "/" + fileName);
        try {
            // 把文件转移到磁盘
            mf.transferTo(file);
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 往request 存放图片的相对路径 
        request.setAttribute("imgPath", "datas/"+fileName);
        return  "show";
    }
    @ExceptionHandler
    public  String  execute(Exception e){
        return "error";
    } 
}


 

 

你可能感兴趣的:(SpringMVC,java,util)