前段请求类型为:form-data

1. 单独进行上传文件

用postman进行请求:

java处理:

@RequestMapping(“/upload”)
    @ResponseBody
    public String handleFileUpload(@RequestParam(“file”) MultipartFile file) {
        if (!file.isEmpty()) {
            try {
                /*
                 * 这段代码执行完毕之后,图片上传到了工程的跟路径; 大家自己扩散下思维,如果我们想把图片上传到
                 * d:/files大家是否能实现呢? 等等;
                 * 这里只是简单一个例子,请自行参考,融入到实际中可能需要大家自己做一些思考,比如: 1、文件路径; 2、文件名;
                 * 3、文件格式; 4、文件大小的限制;
                 */
                String strPath = “d:/files/”+file.getOriginalFilename();
                File file2 = new File(strPath);  
                if (!file2.getParentFile().exists()) {  
                    boolean result = file2.getParentFile().mkdirs();  
                    if (!result) {  
                        System.out.println(“创建失败”);  
                    }  
                }
                BufferedOutputStream out = new BufferedOutputStream(
                        new FileOutputStream(file2));
                System.out.println(file.getName());
                out.write(file.getBytes());
                out.flush();
                out.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                return “上传失败,” + e.getMessage();
            } catch (IOException e) {
                e.printStackTrace();
                return “上传失败,” + e.getMessage();
            }
 
            return “上传成功”;
 
        } else {
            return “上传失败,因为文件是空的.”;
        }
    }

2. 批量进行上传文件:

偷懒前台没写,直接用postman进行请求:

后台处理:

//批量上传
    @RequestMapping(value = “/batch/upload”, method = RequestMethod.POST)      
    @ResponseBody      
    public String handleFileUpload(HttpServletRequest request) {      
      MultipartHttpServletRequest params=((MultipartHttpServletRequest) request);    
        List<MultipartFile> files = ((MultipartHttpServletRequest) request)      
                .getFiles(“file”);     
        String name=params.getParameter(“name”);    
        System.out.println(“name:”+name);    
        String id=params.getParameter(“id”);    
        System.out.println(“id:”+id);    
        MultipartFile file = null;      
        BufferedOutputStream stream = null;      
        for (int i = 0; i < files.size(); ++i) {      
            file = files.get(i);      
            if (!file.isEmpty()) {      
                try {      
                    byte[] bytes = file.getBytes();      
                    stream = new BufferedOutputStream(new FileOutputStream(      
                            new File(file.getOriginalFilename())));      
                    stream.write(bytes);      
                    stream.close();      
                } catch (Exception e) {      
                    stream = null;      
                    return “You failed to upload ” + i + ” => ”      
                            + e.getMessage();    
                }      
            } else {      
                return “You failed to upload ” + i      
                        + ” because the file was empty.”;      
            }    
        }      
        return “upload successful”;    
    }      
post一个二进制文件:

后台处理就简单了,流的读取和写:

//上传二进制
    @RequestMapping(value = “/binary”, method = RequestMethod.POST)      
    @ResponseBody      
    public String BinaryFileUpload(HttpServletRequest request){
        InputStream in = null;
        OutputStream ut = null;
        try{
            in = request.getInputStream();
            FileOutputStream fos=new FileOutputStream(new File(“d:/upload.jpg”));  
            //FileInputStream fs=(FileInputStream) multiReq.getFile(“file”).getInputStream();  
            byte[] buffer=new byte[1024];  
            int len=0;  
            while((len=in.read(buffer))!=-1){  
                fos.write(buffer, 0, len);  
            }  
            fos.close(); 
        }catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(ut!=null)
                {
                    ut.close();
                }
                if(in!=null)
                {
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
结果就在d盘下新建了一个图片。