java http 下载网页代码_Java下http下载文件客户端和上传文件客户端实例代码
Java下http下载文件客户端和上传文件客户端实例代码
发布于 2021-1-14|
复制链接
摘记: 一、下载客户端代码
```java
package javadownload;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.Fi ..
一、下载客户端代码
```java
package javadownload;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @说明 导出虚拟机
* @author wxt
* @version 1.0
* @since
*/
public class GetVM {
/**
* 测试
* @param args
*/
public static void main(String[] args) {
String url = "http://192.168.5.102:8845/xx";
byte[] btImg = getVMFromNetByUrl(url);
if(null != btImg && btImg.length > 0){
System.out.println("读取到:" + btImg.length + " 字节");
String fileName = "ygserver";
writeImageToDisk(btImg, fileName);
}else{
System.out.println("没有从该连接获得内容");
}
}
/**
* 将vm 写入到磁盘
* @param vm 数据流
* @param fileName 文件保存时的名称
*/
public static void writeImageToDisk(byte[] vm, String fileName){
try {
File file = new File("./" + fileName);
FileOutputStream fops = new FileOutputStream(file);
fops.write(vm);
fops.flush();
fops.close();
System.out.println("下载完成");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据地址获得数据的字节流
* @param strUrl 网络连接地址
* @return
*/
public static byte[] getVMFromNetByUrl(String strUrl){
try {
URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
InputStream inStream = conn.getInputStream();//通过输入流获取数据
byte[] btImg = readInputStream(inStream);//得到的二进制数据
return btImg;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 从输入流中获取数据
* @param inStream 输入流
* @return
* @throws Exception
*/
public static byte[] readInputStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
}
}
```
上述代码只适合下载小文件,如果下载大文件则会出现 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 错误,所以如果下载大文件需要对上述代码进行改造,代码如下:
```java
package javadownload;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @说明 导出虚拟机
* @author wxt
* @version 1.0
* @since
*/
public class GetBigFile {
/**
* 测试
* @param args
*/
public static void main(String[] args) {
String url = "http://192.168.5.76:8080/export?uuid=123";
String fileName="yserver";
getVMFromNetByUrl(url,fileName);
}
/**
* 根据地址获下载文件
* @param strUrl 网络连接地址
* @param fileName 下载文件的存储名称
*/
public static void getVMFromNetByUrl(String strUrl,String fileName){
try {
URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
InputStream inStream = conn.getInputStream();//通过输入流获取数据
byte[] buffer = new byte[4096];
int len = 0;
File file = new File("./" + fileName);
FileOutputStream fops = new FileOutputStream(file);
while( (len=inStream.read(buffer)) != -1 ){
fops.write(buffer, 0, len);
}
fops.flush();
fops.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
二、上传文件客户端:
```java
package javadownload;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class FileUpload {
/**
* 发送请求
*
* @param url
* 请求地址
* @param filePath
* 文件在服务器保存路径(这里是为了自己测试方便而写,可以将该参数去掉)
* @return
* @throws IOException
*/
public int send(String url, String filePath) throws IOException {
File file = new File(filePath);
if (!file.exists() || !file.isFile()) {
return -1;
}
/**
* 第一部分
*/
URL urlObj = new URL(url);
HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
/**
* 设置关键值
*/
con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false); // post方式不能使用缓存
// 设置请求头信息
con.setRequestProperty("Connection", "close");//Keep-Alive
con.setRequestProperty("Charset", "UTF-8");
// 设置边界
String BOUNDARY = "----------" + System.currentTimeMillis();
con.setRequestProperty("Content-Type", "multipart/form-data; boundary="
+ BOUNDARY);
// 请求正文信息
// 第一部分:
StringBuilder sb = new StringBuilder();
sb.append("--"); // 必须多两道线
sb.append(BOUNDARY);
sb.append("\r\n");
sb.append("Content-Disposition: form-data;name=\"file_name\";filename=\""
+ file.getName() + "\"\r\n");
sb.append("Content-Type:application/octet-stream\r\n\r\n");
sb.append("Connection:close\r\n\r\n");
byte[] head = sb.toString().getBytes("utf-8");
// 获得输出流
OutputStream out = new DataOutputStream(con.getOutputStream());
out.write(head);
// 文件正文部分
DataInputStream in = new DataInputStream(new FileInputStream(file));
int bytes = 0;
byte[] bufferOut = new byte[1024];
while ((bytes = in.read(bufferOut)) != -1) {
out.write(bufferOut, 0, bytes);
}
in.close();
// 结尾部分
byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线
out.write(foot);
out.flush();
out.close();
/**
* 读取服务器响应,必须读取,否则提交不成功
*/
return con.getResponseCode();
/**
* 下面的方式读取也是可以的
*/
// try {
// // 定义BufferedReader输入流来读取URL的响应
// BufferedReader reader = new BufferedReader(new InputStreamReader(
// con.getInputStream()));
// String line = null;
// while ((line = reader.readLine()) != null) {
// System.out.println(line);
// }
// } catch (Exception e) {
// System.out.println("发送POST请求出现异常!" + e);
// e.printStackTrace();
// }
}
public static void main(String[] args) throws IOException {
FileUpload up = new FileUpload();
System.out.println(up.send("http://192.168.5.102:8845/xx",
"./vif.xml"));
;
}
}
```
java http 下载网页代码_Java下http下载文件客户端和上传文件客户端实例代码相关推荐
- file上传代码 ios_iOS视频压缩存储至本地并上传至服务器实例代码
最近做了一个项目,我把其中的核心功能拿出来和大家分享一下,重点还是自己梳理一下. 这里关于视频转码存储我整理了两个方法,这两个方法都是针对相册内视频进行处理的. 1.该方法没有对视频进行压缩,只是将视 ...
- linux sftp 上传文件内容为空,求linux 下 C/c++ 实现SFTP上传文件的代码,或shell 写的如何区分上传是否成功?...
如题求linux系统下C/C++实现SFTP上传文件的代码,最好有一定的中文注释,谢谢了. 或是, 我看FTP上传的shell写的比较简单,但是,如何能判断是否上传成功哪?? 如果想做上传的进度条的话 ...
- JAVA客户端数据传输_java模拟TCP通信实现客户端上传文件到服务器端
java模拟TCP通信实现客户端上传文件到服务器端,供大家参考,具体内容如下 客户端 package com.zr; import java.io.FileInputStream; import ja ...
- Selenium+Python 下载文件与上传文件
Selenium+Python 下载文件与上传文件 目录 下载文件功能 谷歌浏览器下载设置 切换iframe框架 鼠标悬浮元素定位 鼠标悬浮后出现的元素定位 上传文件 切换句柄 利用AutoIt进行桌 ...
- php+easyui+上传文件,easyui 上传文件代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO ...
- Java springcloud B2B2C o2o多用户商城 springcloud架构 (十七)上传文件
2019独角兽企业重金招聘Python工程师标准>>> 这篇文章主要介绍,如何在springboot工程作为服务器,去接收通过http 上传的multi-file的文件. 构建工程 ...
- 以命令方式从ftp服务器上下载和上传文件
** 以命令方式从ftp服务器上下载和上传文件 wang ** 1."开始"→"运行",输入"cmd",打开命令提示符: 2.在命令提示符内 ...
- ftp linux 推送文件_Linux下SSH用FTP命令上传文件至另一个FTP空间
如果没有ftp 提示: -bash: ftp: command not found 请先安装ftp应用程序: yum install ftp #ftp 127.0.0.1 21 输入远程空间的FTP ...
- win10下php + apache客户端上传文件
win10下php + apache客户端上传文件 1.apache配置1 //去掉以下行首#,加载apache相关模块,启用php LoadModule actions_module modules ...
最新文章
- 55 前端构建工具Gulp
- 什么时候使用临时表?
- Windows 2003 安装WLM2009/MSN9错误的另一种解决办法
- ABAP OO小例子
- java jsonobject转List_java – 将JSONObject转换为List或JSONArray的简单代码?
- JavaGUI版本销售管理系统
- html 头标签 meta http-equiv 属性应用。
- 生成api接口文档的故事
- win10安装solidworks 注册机闪退的问题,转自知乎
- 假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。...
- android c++服务器端,c++服务器与android客户端进行文件传输功能的实现
- 新能源电动车充电隐患不得不防,这些常识要知道
- Python爬虫笔记————抓取 猫眼电影排行榜Top100
- echarts地图导航飞线与层级穿透
- CSDN博客插入图片
- 互联网常用词汇索引表
- 城际客车微信订票系统(固定线路拼车在线售票平台开发)
- 巧妙地用继电器实现直流电机正反转
- Win7 vista 界面美化
- 笔记本电脑设备管理器中'符合USBxHCI的主机控制器'出现感叹号,所有的USB接口失灵--解决
热门文章
- 100%的BAT招聘岗位都考的知识,你精通了吗?
- Leangoo看板工具做单团队敏捷开发
- 麦克纳姆轮——机械部分
- 分享一个iec104协议的资源,一个模拟iec104协议主站端的小工具
- 05Observer/Event(观察者)模式
- 如何区分网线是几类的_认清网线的六种材质,挑选网线不再被坑
- pyqt创建窗口没有句柄_Filament 渲染引擎剖析 之 FrameGraph 1 虚拟资源的定义与创建...
- 自动驾驶多模态传感器融合的综述
- 接收率25.9%,ICCV 2021接收论文列表放出,你中了吗?
- IDA-3D:基于立体视觉的深度感知3D目标检测网络(CVPR2020)