sprint boot处理form-data类型的请求

参考文章:https://blog.csdn.net/linzhiqiang0316/article/details/77016997

像原作者致敬,如果有冒犯请联系本人删除即可。

前段请求类型为: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盘下新建了一个图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值