TCP上传文件 遇到发现一些问题

public class TCPServerFs implements Runnable{
	private Socket s;
	public TCPServerFs(Socket s) {
		super();
		this.s = s;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		//读取文件名
		try {
			InputStream in = s.getInputStream();

			//读取上传的文件名
			byte[] buf = new byte[1024];
			int len = in.read(buf);
			String FileName = new String(buf,0,len);
			System.out.println("上传的文件是:"+FileName);
			File uf = new File("F:/0123/MyServer",FileName);
			//FileOutputStream fos = new FileOutputStream(uf);读取流关联了 文件对象  当该文件不存在时 会自动创建
			int count =1;
			//判断该文件是否已存在 
			while (uf.exists()) {
				System.out.println(uf.exists());
				int index = FileName.lastIndexOf(".");
				String name = FileName.substring(0, index);
				String type = FileName.substring(index+1);
				uf = new File("F:\\0123\\MyServer",name+"("+(count++)+")."+type);
			}
			System.out.println("文件在服务端的存储名:"+uf.getName());
			FileOutputStream fos = new FileOutputStream(uf);
			//读取 文件数据
			while ((len = in.read(buf))!=-1) {
				fos.write(buf,0,len);
			}
			PrintStream out = new PrintStream(s.getOutputStream(),true);
			out.println("文件shang传成功");
			System.out.println("文件来自:"+s.getInetAddress().getHostName());
		} catch (Exception e) {
			e.getMessage();
		} 
	}
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		ServerSocket ss = new ServerSocket(10713);
		while (true) {
			System.out.println("服务端已开启,等待连接");
			Socket s = ss.accept();

			new Thread(new TCPServerFs(s)).start();
		}
	}
}

当 创建文件对象的时候 并没有创建文件实例 所以file.exists()返回false 但是

//FileOutputStream fos = new FileOutputStream(uf);读取流关联了 文件对象  当该文件不存在时 会自动创建     所以file.exists()返回true 永远无法完整上传的第一个文件 服务端第一个文件的大小为0

TCP上传文件 遇到发现一些问题,布布扣,bubuko.com

时间: 2024-12-28 00:18:47

TCP上传文件 遇到发现一些问题的相关文章

TCP 上传文件

package liu.net.udpupload; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class 

TCP、UDP练习题 (UDP聊天程序、TCP上传文本文件和图片文件)

TCP.UDP编程练习 TCP ☆上传文本文件 读取一个本地文本文件,将数据发送到服务端,服务器端对数据进行存储. 存储完毕后,给客户端一个提示. 一.解题思路 客户端:(1) 创建Socket对象----用服务器的ip+端口号 (2)读取文件内容 (3)通过socket把内容发送给服务器端(把socket中的输出流包装成"打印流"来进行发送文本,是一种比较安全的输出方式,不会出现失真.) 服务器端:(1) 创建服务器socket---ServerSocket (2)通过ServerS

黑马程序员 【】java学习之路——TCP(三)客户端上传文件到服务器

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- import java.io.*; import java.net.*; class

[转]如何使用multipart/form-data格式上传文件

form表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是"application/x-www-form-urlencoded",不能用于文件上传:只有使用了multipart/form-data,才能完整的传递文件数据. 有时,在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的

如何使用multipart/form-data格式上传文件(POST请求时,数据是放在请求体内,而不是请求头内,在html协议中,用 “\r\n” 换行,而不是 “\n”)

在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的方式.最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器. 表单形式上传附件 具体的步骤是怎样的呢? 首先,客户端和服务器建立连接(TCP协议). 第二,客户端可以向服务器端发送数据.因为上传文件实质上也是向服务器端发送请求. 第三,客户端按照符合“m

通过HTTP协议上传文件

HTTP是很常见的协议,虽然用得很多,但对细节的了解却是很浅,这回通过向服务端上传文件信息来理解细节.网络库的选择:1.WinHTTP是windows下常用的库:2.CURL是广受喜爱的开源库.对于我来说,libcurl最大的优点是使用方便,可以把注意力更多的集中到业务层上,提高工作效率,避免重造轮子:缺点是略大(MD编译有264KB,MT编译有340KB),不像WinHTTP可以由windows操作系统集成.下边展示如何使用这两种网络库实现表单POST文件. 一.libcurl 库下载:htt

confluence上传文件附件预览乱码问题(linux服务器安装字体操作)

在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候无法识别文档字体,所以才会出现乱码.还比如某个业务有个功能生成图片,结果图片里的字全变空格了,这也是服务器上没相应的字库造成的.解决办法:在服务器上安装中文字体.操作方法如下: 1)先安装想要的字体, 如楷体等, 从本机"c盘->Windows-Fonts"文件夹里复制simkai字

关于confluence上传文件附件预览查看时出现乱码的问题解决办法

在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候无法识别文档字体,所以才会出现乱码.还比如某个业务有个功能生成图片,结果图片里的字全变空格了,这也是服务器上没相应的字库造成的. 1.解决办法:在服务器上安装中文字体.操作方法如下: 1)先安装想要的字体, 如楷体等, 从本机"c盘->Windows-Fonts"文件夹里复制simk

Qt通过HTTP POST上传文件

本文使用Qt Creator用HTTP POST的方法上传文件,并给出一个上传文件的例程. 本文主要客户端,所以对于服务器端程序编写的描述会比较简略 服务器使用Django编写,django服务器接收文件的方法在文章http://www.cnblogs.com/fnng/p/3740274.html中有较为清晰的讲解,我搭建的服务器端程序除了没有网页客户端以及部分变量名称不同以外,基本上与这篇文章的服务器搭建过程一样. 如果服务器端程序发生变化,这篇文章后面给出的客户端例程可能就不再适用.因此如