winform服务器http接收文件,在WinForm中通过HTTP协议向服务器端上传文件

在WinForm中通过HTTP协议向服务器端上传文件相信用http://doc.xuehai.net写一个上传文件的网页大家都会写但是有没有人想过通过在WinForm中通过HTTP协议上传文件呢有些人说要向服务器端上传文件用FTP协议不是很简单吗效率又高为什么还要使用HTTP协议那么麻烦呢这里面有几个原因1FTP服务器的部署相对麻烦还要设置权限权限设置不对还会惹来一系列的安全问题。2如果双方都还有防火墙又不想开发FTP相关的一些端口时HTTP就会大派用场就像WEB Services能穿透防火墙一样。3其他的...还在想呢... 但是使用HTTP也有他的一些问题例如不能断点续传大文件上传很难速度很慢所以HTTP协议上传的文件大小不应该太大。说了这么多原归正传一般来说在Winform里通过HTTP 上传文件有几种可选的方法1前面提到的Web Services就是一种很好的方法通过编写一个WebMethod包含有byte 类型的参数然后调用Web Services的方法文件内容就会以Base64编码传到服务器上然后重新保存即可。WebMethod public void UploadFilebyte contentstring filename... Stream sw new StreamWriter... sw.Close 当然这种通过Ba

se64编码的方法效率比较低那么可以采用WSE支持附件并以2进制形式传送效率会更高。2除了通过WebService另外一种更简单的方法就是通过WebClient或者HttpWebRequest来模拟HTTP的POST动作来实现。这时候首先需要编写一个http://doc.xuehai.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 C# 的 Socket 编程实现局域网文件传输。具体步骤如下: 1. 创建一个服务器端和一个客户端,分别监听和连接指定的 IP 地址和端口号。 2. 服务器端接收客户端发送的文件,并将其保存到指定的路径下。 3. 客户端读取本地文件,并将其发送给服务器端。 以下是一个简单的示例代码: 服务器端: ```csharp using System; using System.IO; using System.Net; using System.Net.Sockets; class Server { static void Main(string[] args) { // 创建一个监听器 TcpListener listener = new TcpListener(IPAddress.Any, 12345); listener.Start(); Console.WriteLine("等待客户端连接..."); // 接受客户端连接 TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("客户端已连接"); // 接收文件名和文件大小 NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string fileName = Encoding.UTF8.GetString(buffer, 0, bytesRead); bytesRead = stream.Read(buffer, 0, buffer.Length); long fileSize = BitConverter.ToInt64(buffer, 0); // 创建文件流并保存文件 using (FileStream fileStream = new FileStream(fileName, FileMode.Create)) { long totalBytesRead = 0; while (totalBytesRead < fileSize) { int bytesToRead = (int)Math.Min(buffer.Length, fileSize - totalBytesRead); bytesRead = stream.Read(buffer, 0, bytesToRead); fileStream.Write(buffer, 0, bytesRead); totalBytesRead += bytesRead; } } Console.WriteLine("文件已保存"); // 关闭连接 client.Close(); listener.Stop(); } } ``` 客户端: ```csharp using System; using System.IO; using System.Net; using System.Net.Sockets; class Client { static void Main(string[] args) { // 连接服务器 TcpClient client = new TcpClient(); client.Connect(IPAddress.Parse("192.168.1.100"), 12345); // 发送文件名和文件大小 NetworkStream stream = client.GetStream(); string fileName = "test.txt"; byte[] fileNameBytes = Encoding.UTF8.GetBytes(fileName); stream.Write(fileNameBytes, 0, fileNameBytes.Length); long fileSize = new FileInfo(fileName).Length; byte[] fileSizeBytes = BitConverter.GetBytes(fileSize); stream.Write(fileSizeBytes, 0, fileSizeBytes.Length); // 发送文件内容 using (FileStream fileStream = new FileStream(fileName, FileMode.Open)) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0) { stream.Write(buffer, 0, bytesRead); } } Console.WriteLine("文件已发送"); // 关闭连接 client.Close(); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值