基于网络编程实现文件的上传

基于网络编程实现文件的上传

上传一张图片

服务端

1、创建本地文件夹对象,并判断该文件夹是否存在,不存在则创建

File file = new File("E:\\****");
if (!file.exists()){
    file.mkdirs();
}

注:****为文件夹名称
2、创建服务器套接字

ServerSocket server = new ServerSocket(****);
  • 注:****为端口号,与客户端的端口号保存一致

3、使用套接字对象调用accep()方法,监听端口是否有对象,有则返回Socket对象

Socket socket = server.accept();

4、使用套接字对象获取网络输入流

InputStream is = socket.getInputStream();

5、创建本地字节输出流对象

FileOutputStream fos = new FileOutputStream(file + "\\iu.jpg");

注:file指向的是创建的文件夹
6、边读边写

byte[] bytes = new byte[1024];
int len;
while ((len = is.read(bytes)) != -1){
    fos.write(bytes,0,len);
}

7、向客户端回写数据,从套接字对象中获取网络输出流对象

OutputStream os = socket.getOutputStream();
os.write("上传完毕!".getBytes());

8、关闭资源

fos.close();
socket.close();
server.close();

注:本地字节输出流对象(fos)也需要关闭

客户端

1、建立图片和程序之间的管道

FileInputStream fis = new FileInputStream("E:\\****\\iu.jpg");
  • 注:括号中为图片在本地文件夹中的绝对路径

2、创建套接字对象

Socket socket = new Socket("127.0.0.1",****);

注:****为端口号,127.0.0.1为主机IP
3、从套接字对象中获取网络输出流对象

OutputStream os = socket.getOutputStream();

4、从源文件读数据,往服务端写数据

byte[] bytes = new byte[1024];
int len;
while ((len = fis.read(bytes)) != -1){
    os.write(bytes,0,len);
}

5、使用套接字对象关闭网络输出流对象

socket.shutdownOutput();

6、读取服务端回写的数据

InputStream is = socket.getInputStream();
len = is.read(bytes);
System.out.println(new String(bytes,0,len));

7、关闭资源

fis.close();
socket.close();
  • 注:这里的图片与程序之间的管道(fis)是要关闭的,他是程序与本地文件的交互,没有使用网络套接字对象

注:先运行服务端,再运行客户端,顺序不能反,即可实现文件的上传

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值