java 把文件变成流文件上传到后台接口


@RequestMapping(value={"/uploadFile"},method = {RequestMethod.POST})
	public RespEntity uploadFile(String ticket_id,
			MultipartFile file) throws Exception {
		
		String uuid = UUID.randomUUID().toString().replace("-", "");
		String originalFilename = file.getOriginalFilename();
		String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
		String fileName=uuid+extName;
		
		//System.out.println(file[0].getOriginalFilename());
		// 超级管理员邮箱
		String adminemail = "xxxxxxx@qq.com";
		// 鉴权token
		String token = "xxxxxxx-xxxx-xxxx-xxxx-xxxxx";
		
		// 10位时间戳
		long timestamp10 = System.currentTimeMillis() / 1000L;
		// 签名算法
		@SuppressWarnings("deprecation")
		String sign = DigestUtils.shaHex(adminemail + "&" + token + "&" + timestamp10);
		// 创建客户  url
		String url = "http://xxxx.xx.cn/xxxxx/xx/upload_file?email="
				+ adminemail + "×tamp=" + timestamp10 + "&sign=" + sign+"&ticket_id="+ticket_id+"&file_name="+fileName;
		log.info("创建客户 url= {}",url);
		if(StringUtils.isBlank(url)) {
			return RespEntity.error(RespCode.COMMON_PARAM_BLANK);
		}
	
		
		 String result="";
	          
	        try {
 
	            // 服务器的域名
	            URL url1 = new URL(url);
	            HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
	            // 设置为POST情
	            conn.setRequestMethod("POST");
	            // 发送POST请求必须设置如下两行
	            conn.setDoOutput(true);
	            conn.setDoInput(true);
	            conn.setUseCaches(false);
	            // 设置请求头参数
	            conn.setRequestProperty("connection", "Keep-Alive");
	            conn.setRequestProperty("Charsert", "UTF-8");
	            conn.setRequestProperty("Content-Type", "application/octet-stream");
 
	            OutputStream out = new DataOutputStream(conn.getOutputStream());
 
	            // 上传文件
 
	            StringBuilder sb = new StringBuilder();
	         
	            // 将参数头的数据写入到输出流中
	            out.write(sb.toString().getBytes());
 
	            // 数据输入流,用于读取文件数据
	            DataInputStream in = new DataInputStream(file.getInputStream());
	            byte[] bufferOut = new byte[1024*20];
	            int bytes = 0;
	            // 每次读8KB数据,并且将文件数据写入到输出流中
	            while ((bytes = in.read(bufferOut)) != -1) {
	                out.write(bufferOut, 0, bytes);
	            }
	          
	            in.close();
 
	    
	            out.flush();
	            out.close();
 
	            // 定义BufferedReader输入流来读取URL的响应
	BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
	            String line = null;
	            while ((line = reader.readLine()) != null) {
	                result += line; //这里读取的是上边url对应的上传文件接口的返回值,读取出来后,然后接着返回到前端,实现接口中调用接口的方式
	            }
	        } catch (Exception e) {
	            System.out.println("发送POST请求出现异常!" + e);
	            e.printStackTrace();
	        }
		System.out.println(result);
		return  RespEntity.success(result);
	}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值