案例:文件上传案例

本文详细介绍了Java中实现文件上传的步骤和优化分析,包括客户端如何通过socket将文件发送到服务端,服务端如何接收并保存文件,以及优化方案。同时,还展示了如何模拟B/S服务器,实现简单的网站服务。
摘要由CSDN通过智能技术生成

Java学习

day25

  1. 文件上传案例
  2. 模拟B\S服务器
    资源管理器

1、文件上传案例

1.1、上传分析图解

  1. [客户端]输入流,从硬盘读取文件数据到程序中。
  2. [客户端] 输出流,写出文件数据到服务端。
  3. [服务端]输入流,读取文件数据到服务端程序。
  4. [服务端]输出流,写出文件数据到服务器硬盘中。
    文件上传图解
    基本实现
  5. 实现步骤:
  • 1、创建一个本地字节收入流FileInputStream 对象,构造方法中绑定读取数据的数据源。
  • 2、创建一个socket 对象,构造方法中绑定服务器的IP地址和端口号。
  • 3、使用socket中的方法getoutputstream 获取网络字节输出流。
  • 4、使用本地字节输入流中的read方法,把读取的文件上传到服务器。
  • 5、使用网络输出流中的write方法,读取本地文件。
  • 6、使用socket 中方法,获取输入流对象
  • 7、通过网络输入流对象中的read 方法,读取回写数据
  • 8、释放资源
  1. 服务端实现:
package Demo01FileUpload;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
   
	public static void main(String[] args) throws IOException {
   
		//1.创建一个服务器的serversocket 对象
		ServerSocket server = new ServerSocket(8101);
		//2.等待客户端连接
		Socket socket = server.accept();
		//3.获取输入流
		InputStream  is = socket.getInputStream();
		//
		File file = new File("D:\\Java\\20210601");
		if(!file.exists()) {
   
			file.mkdirs();
		}
		
		FileOutputStream fos = new FileOutputStream(file+"1.bmp");
		
		int len=0;
		byte[] bytes = new byte[1024];
		
		while((len=is.read(bytes))!=-1) {
   
			fos.write(bytes,0,len);
		}
		
		socket.getOutputStream().write("图片上传成功".getBytes());
		
		fos.close();
		socket.close();
		server.close();
	}
}
  1. 客户端实现:
package Demo01FileUpload;

import java.io.FileInputStream;

public class TcpClient {
   
	public static void main(String[] args) throws IOException {
   
		//1、创建一个本地字节收入流FileInputStream 对象,构造方法中绑定读取数据的数据源。
		FileInputStream fis = new FileInputStream("D:\\Java\\01-端口号.bmp");
		//2、创建一个socket 对象,构造方法中绑定服务器的IP地址和端口号。
		Socket socket = new Socket("127.0.0.1",8101);
		//3、使用socket中的方法getoutputstream 获取网络字节输出流。
		OutputStream os = socket.getOutputStream()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值