HttpUrlConnection实现小文件上传

来源:互联网 发布:中国海关统计数据库 编辑:程序博客网 时间:2024/04/30 15:15
uploadImg("your url", new String[]{ "C:\\Users\\po\\Desktop\\457880.jpg" });
public static void uploadImg(String urlStr, String[] files){String end = "\r\n";String PREFIX = "--";String boundary = UUID.randomUUID().toString();try{URL url = new URL(urlStr);HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();InputStream is = new FileInputStream(new File("C:\\Users\\po\\Desktop\\ssl.crt"));// 证书锁定,直接用预埋的证书生成TrustManagerKeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());keyStore.load(null);keyStore.setCertificateEntry("ll", CertificateFactory.getInstance("X.509").generateCertificate(is));// 通过TrustManager工厂生成TrustManagersTrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());trustManagerFactory.init(keyStore);TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();// 初始化SSL上下文SSLContext sslContext = SSLContext.getInstance("TLS");sslContext.init(null, trustManagers, null);final HostnameVerifier hostnameVerifier = new HostnameVerifier(){@Overridepublic boolean verify(String hostname, SSLSession session){return hostname.contains("xx.com.cn");}};conn.setSSLSocketFactory(sslContext.getSocketFactory());conn.setHostnameVerifier(hostnameVerifier);conn.setRequestMethod("POST");conn.setConnectTimeout(1000000);conn.setRequestProperty("Accept-Encoding", "gzip");conn.setRequestProperty("Connection", "Keep-Alive");conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);conn.setRequestProperty("Host", "xxx.xxx.xxx");conn.setRequestProperty("Charset", "utf-8");conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);StringBuilder builder = new StringBuilder();DataOutputStream dos = new DataOutputStream(conn.getOutputStream());builder.append(PREFIX + boundary + end);builder.append("Content-Disposition: form-data; name=headImgFile;filename=" + System.currentTimeMillis() + ".jpg" + end);builder.append("Content-Type:application/octet-stream" + end);builder.append("Content-Transfer-Encoding:binary" + end + end);dos.writeBytes(builder.toString());File file = new File(files[0]);FileInputStream fis = new FileInputStream(file);byte[] buffer = new byte[4096];int len;while ((len = fis.read(buffer)) != -1){System.out.println("uploading  " + len);dos.write(buffer, 0, len);}fis.close();builder.append(end + PREFIX + boundary + PREFIX);dos.writeBytes(builder.toString());dos.flush();dos.close();conn.connect();int responseCode = conn.getResponseCode();if (responseCode == 200){InputStream inputStream = conn.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));System.out.println("response..." + URLDecoder.decode(reader.readLine()));reader.close();}} catch (Exception e){e.printStackTrace();}}

0 0
原创粉丝点击