代码是通用的,其他验证上传类poc,稍微改改就能用,这里是apache flink jar上传的验证,写代码的工具是idea,用的maven快速获取依赖。

import com.alibaba.fastjson.JSONObject;
import com.sun.deploy.net.HttpUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;
import org.apache.http.util.EntityUtils;import javax.net.ssl.*;
import java.io.*;
import java.net.*;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class test {public static String doDelete(String url) {CloseableHttpClient httpClient = HttpClients.createDefault();HttpDelete httpDelete = new HttpDelete(url);RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000).setSocketTimeout(60000).build();httpDelete.setConfig(requestConfig);httpDelete.setHeader("Content-type", "application/json");httpDelete.setHeader("DataEncoding", "UTF-8");httpDelete.setHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0 Safari/537.36");CloseableHttpResponse httpResponse = null;try {httpResponse = httpClient.execute(httpDelete);HttpEntity entity = httpResponse.getEntity();String result = EntityUtils.toString(entity);return result;} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (httpResponse != null) {try {httpResponse.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (null != httpClient) {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}}return null;}private  static  class  TrustAnyTrustManager implements X509TrustManager{@Overridepublic void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}}private static  class  TrustAnyHostnameVerifier implements HostnameVerifier{@Overridepublic boolean verify(String s, SSLSession sslSession) {return true;}}public static String senPostWithFile(String url,String uploaddata) throws IOException {DataOutputStream out = null;BufferedReader in = null;String result = "";String upload_jar_name = "check-execute.jar";try {// 创建代理服务器InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 8080);// http 代理Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);//打开和URL之间的连接//HTTPS/*SSLContext sc = SSLContext.getInstance("SSL");sc.init(null,new TrustManager[]{new TrustAnyTrustManager()},new SecureRandom());URL console = new URL(url);HttpsURLConnection connhttps = (HttpsURLConnection) console.openConnection();connhttps.setSSLSocketFactory(sc.getSocketFactory());connhttps.setHostnameVerifier(new TrustAnyHostnameVerifier());*///HTTPURL realUrl = new URL(url);HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection(proxy);//设置响应超时时间conn.setConnectTimeout(30000);conn.setReadTimeout(30000);conn.setDoOutput(true);conn.setDoInput(true);//设置请求头String BOUNDARY = "df7dc15b86ff6075983fdc5339c90df2";//定义数据分割线conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("User-Agent","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0 Safari/537.36");conn.setRequestProperty("Content-Type","multipart/form-data; boundary="+BOUNDARY);conn.setRequestProperty("Accept-Encoding","gzip, deflate");conn.setRequestProperty("Connection","close");conn.connect();//设置请求体out = new DataOutputStream(conn.getOutputStream());byte[] end_data =("\r\n--"+BOUNDARY+"--\r\n").getBytes();//定义最后数据分隔线StringBuilder sb1 = new StringBuilder();sb1.append("--");sb1.append(BOUNDARY);sb1.append("\r\n");sb1.append("Content-Disposition: form-data; name=\"jarfile\";filename=\""+upload_jar_name+"\"");sb1.append("\r\n");sb1.append("Content-Type:application/octet-stream");sb1.append("\r\n");sb1.append("\r\n");sb1.append(uploaddata);sb1.append("\r\n");out.write(sb1.toString().getBytes());out.write(end_data);out.flush();//获取响应流in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine())!=null){result += line;}System.out.println(result);}catch (Exception e){System.out.println("发送Post 请求出现异常"+e);e.printStackTrace();}finally {if (out!=null){out.close();}if (in !=null){in.close();}}return  result;}public static String deletePostWithFile(String url,String jar_hash_name) throws Exception {String single_jar_url = url+"/jars/"+jar_hash_name;String response = doDelete(single_jar_url);return response;}public static void main(String[] args) throws Exception {final Base64.Decoder decoder = Base64.getDecoder();final Base64.Encoder encoder = Base64.getEncoder();String url="http://172.17.229.59:8081/jars/upload";String url2="http://172.17.229.59:8081";String uploaddata="UEsDBBQACAgIACJ1bU8AAAAAAAAAAAAAAAAUAAQATUVUQS1JTkYvTUFOSUZFU1QuTUb+ygAA803My0xLLS7RDUstKs7Mz7NSMNQz4OXyTczM03XOSSwutlJwrUhNLi1J5eXi5QIAUEsHCIiKCL8wAAAALgAAAFBLAwQKAAAIAAAidW1PAAAAAAAAAAAAAAAACQAAAE1FVEEtSU5GL1BLAwQUAAgICAAidW1PAAAAAAAAAAAAAAAADQAAAEV4ZWN1dGUuY2xhc3ONVet2E1UU/k4yyUwmQy+TQlsQBdSStqSxiIotIlAKVkJbSa0G8DKZHpPTJjNhLjTVCvoQ/ugT8MsfqCtx0aUPwEOx3Gdo09KGtUzW7H3O3vvbt7PPzPMXz/4FMIlfdbyDyxo+1XBFx1Vc05HCjIbrks+quKHipobPNMzp0PC5hlsqChpu6+jBvCQLGhal6gsVd3QUsaRjAF9qWJb8K0m+lqQkyd0URbin4r6OkzLoN5J/K8l3Or6HpaKswmZIXhKOCC4zxLOjywzKjLvCGXoLwuHzYb3MvSWrXCOJWXBtq7ZseULud4RKUBU+Q6ow2+R2GPBpEtUt4TAcy94rrFoPrXzNcir5YuAJpzItA7AGw/F9qkXPtbnvXwtFbYV75CDeCDZkuENo8m15FQqX6eKaHLuEtesrtJI2h0NIG7ujCQNRyxdty3GiqPps0+aNQLiOr4J86EU39Gx+Q8gyjZ3yJiTSwLsYYQCD6voTjlXnKriBH1AxUIWgJNaFY2AVawxDr6uToe9gCeSPsp/gTQoYy9syTI5k+bJw8n6VkogAws2/zCkVKcqWX5WWNQN1UNtjOQK6oB73H6pSxQMDHnxpH5Dp/asGQjw0sA7KtwlhYAMjBn7ETwyDB9PrJB7fvLJpYBM/G3gEoeKxgV9Qo0x3mvRKaQvlVW5TsMyeqNPoV3uw4Qe8zpCu8IBa1eCenIKRbJch6nb46cAtuOvcm7F8SmAg29VIs10noOmk8Tix3/FM1fKK/EHIHZtPj95lONotLM1ukjeFH/jRXSGzhB9YXiDNR7tOW/8hIUMP1TfnNMKA3HKLCh7cBdPJ7lMQfCjbVSETMUKfX+c1UReBPJKzr2/TgTFXq5Y/z5uUtOJELGHXXNmyuBvKSjoRF8nJXipJq9HgDl2L3P86kL3LrAXu7nRnurim+A25w2m8Te9G+YvRxaILRvQs7fLE6a4hMdYGexqps0STkZBhlKjx0gBjGCeewjnkyIrAbInskiT7y4wVxuLnb5vxv6G0kDCTLahbOLUNrZT8B6lS3NSLJcVMF0uJc8U2jPknuGAemVK20VMye9voa6F/C6rZK0W7mGFFYswOJtdCRuoHSsMU5Ggbx8zBFoamEsOJFoa3kJb8+BMo4wW5OvEH3tjGyVIbb5pvtXBqnJ5o0cLpFs7s1fohjhCN01+BSvUMEr1AdV6EjptI4xbpOXqxhj66kP34DSb+RCbqzR36WEwScoIaGSdEDu/RXpE9wXm8H/l9St4m5dsMv+MDWsXI28IOYg1zFP8jQjwifhEfU5+nCKWQ/TQ9l6IsP/kPUEsHCEEOnKXWAwAA4gYAAFBLAQIUABQACAgIACJ1bU+Iigi/MAAAAC4AAAAUAAQAAAAAAAAAAAAAAAAAAABNRVRBLUlORi9NQU5JRkVTVC5NRv7KAABQSwECCgAKAAAIAAAidW1PAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAB2AAAATUVUQS1JTkYvUEsBAhQAFAAICAgAInVtT0EOnKXWAwAA4gYAAA0AAAAAAAAAAAAAAAAAnQAAAEV4ZWN1dGUuY2xhc3NQSwUGAAAAAAMAAwC4AAAArgQAAAAA";String result2= senPostWithFile(url,new String(decoder.decode(uploaddata)));JSONObject object = JSONObject.parseObject(result2);String s = object.getString("filename");System.out.println("文件路径是:"+s);String reg="[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}_check-execute.jar";Pattern p = Pattern.compile(reg);// get a matcher objectMatcher m = p.matcher(s);String s3 = m.replaceAll("");System.out.println("上传目录是:"+s3);String deletename = s.replace(s3,"");System.out.println("正则匹配的值是: "+deletename);String s2 = object.getString("status");System.out.println("是否上传成功: "+s2);//deletePostWithFile(url2,deletename);}
}

java模拟文件上传并正则匹配返回路径相关推荐

  1. java 模拟post上传文件_JAVA模拟HTTP post请求上传文件

    在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...

  2. centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

  3. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

  4. JAVA大文件上传断点续传解决方案

    JAVA大文件上传断点续传解决方案 参考文章: (1)JAVA大文件上传断点续传解决方案 (2)https://www.cnblogs.com/songsu/p/11834425.html (3)ht ...

  5. java jsp 文件上传_用JSP编写文件上传

    用JSP编写文件上传 发布时间:2016-09-14 来源: 点击: 次 如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 pack ...

  6. Java 多文件上传

    转载自  Java 多文件上传 前台代码很简单: <input type="file" accept=".zip" class="file-lo ...

  7. 文件上传 java 完美,vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData())...

    vue+java实现文件上传(excel等),会出现跨域问题,直接用form表单提交就不会有问题了(new FormData()) 地址:https://www.cnblogs.com/muscles ...

  8. Java实现文件上传到服务器(FTP方式)

    Java实现文件上传到服务器(FTP方式) 1,jar包:commons-net-3.3.jar 2,实现代码: //FTP传输到数据库服务器private boolean uploadServerB ...

  9. Fiddler2 模拟文件上传

    最近遇到一个需求,需要上传音频文件, 服务端使用webService 通过spring3 进行文件上传.代码完成后使用 html 通过post 方式请求接口成功了,但不知道如何使用Fiddler2工具 ...

最新文章

  1. 绿色版NVM安装与配置详细说明
  2. 中国增速第一!《全球数字经济白皮书》发布
  3. Swift - 使用CollectionView实现图片Gallery画廊效果(左右滑动浏览图片)
  4. linux xargs命令的使用及其与exec、管道的区别
  5. 自然语言处理之循环神经网络(五)
  6. 20000赫兹的声音试听下载_好听又不贵,DLC球顶双面镀铍动圈:七赫兹i99
  7. 你应当如何学习C++(以及编程)(rev#1)
  8. mybatis传递多个参数_深入浅出MyBatis:MyBatis解析和运行原理
  9. Mysql update 使用join更新字段
  10. MyBatis整合Spring的实现(11)
  11. 利用matlab绘制流场中的流线
  12. 实现一下黑客帝国代码雨
  13. PHP解压zip文件,并且读取文件内容输出
  14. 计算机数字键盘无法输入数字,电脑数字键打不出数字怎么办?电脑数字键打不出数字的修复方法...
  15. 这所211怒将自己学生告成老赖:90后校友承诺捐母校1100万未兑现
  16. hostapd建立无线AP出现did not acknowledge association的解决办法
  17. Linux开机自动获取本机公网IP并发送至指定邮箱
  18. vsc编辑器设置背景图
  19. 机器学习和深度学习的主要术语(中英)
  20. Java 关于使用Arrays.asList()数组转集合的问题

热门文章

  1. 黑帽SEO技术和白帽SEO技术有什么区别?
  2. 开发中是如何保证接口幂等性的?
  3. 基于SSM个人信贷管理系统
  4. 联想小新增加固态硬盘后安装不了系统_联想小新2020年第10代cpu安装win10系统和BIOS设置教程(2020年新b...
  5. Java File.listFiles方法具有什么功能呢?
  6. 【图文教程】传统IDC部署网站
  7. 网络综合环境搭建--思科搭建公司网络简图
  8. python 抓取 实时公交_Show SN: 北京实时公交Python接口 (github.com)
  9. 红帽联合微软、谷歌、亚马逊推出公共注册表OperatorsHub.io
  10. matlab零状态响应幅度频谱,频域分析法求解零状态响应的matlab过程