当前位置:实例文章 » C#开发实例» [文章]c#——WCF和HTTP文件传输实验

c#——WCF和HTTP文件传输实验

发布人:shili8 发布时间:2023-08-12 07:15 阅读次数:103

下面是一个使用C#编写的WCF和HTTP文件传输实验的示例代码,包含了一些代码注释:

csharp
using System;
using System.IO;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace FileTransferService
{
    // 定义文件传输服务的接口
    [ServiceContract]
    public interface IFileTransferService
    {
        [OperationContract]
        [WebGet(UriTemplate = /file/{fileName})]
        Stream DownloadFile(string fileName);

        [OperationContract]
        [WebInvoke(UriTemplate = /file/{fileName})]
        void UploadFile(string fileName Stream fileStream);
    }

    // 实现文件传输服务接口
    public class FileTransferService : IFileTransferService
    {
        public Stream DownloadFile(string fileName)
        {
            // 获取文件路径
            string filePath = Path.Combine(Environment.CurrentDirectory fileName);

            // 检查文件是否存在
            if (!File.Exists(filePath))
            {
                WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
                return null;
            }

            // 打开文件流并返回
            FileStream fileStream = new FileStream(filePath FileMode.Open FileAccess.Read);
            WebOperationContext.Current.OutgoingResponse.ContentType = application/octet-stream;
            return fileStream;
        }

        public void UploadFile(string fileName Stream fileStream)
        {
            // 获取文件路径
            string filePath = Path.Combine(Environment.CurrentDirectory fileName);

            // 创建文件流并保存上传的文件
            using (FileStream outputStream = new FileStream(filePath FileMode.Create FileAccess.Write))
            {
                fileStream.CopyTo(outputStream);
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 创建文件传输服务的主机
            using (WebServiceHost host = new WebServiceHost(typeof(FileTransferService) new Uri( />            {
                // 启动服务
                host.Open();

                Console.WriteLine(文件传输服务已启动。);
                Console.WriteLine(按任意键停止服务。);
                Console.ReadKey();

                // 停止服务
                host.Close();
            }
        }
    }
}


上述代码定义了一个文件传输服务的接口`IFileTransferService`,包含了两个方法`DownloadFile`和`UploadFile`,分别用于下载和上传文件。`DownloadFile`方法通过GET请求下载文件,`UploadFile`方法通过POST请求上传文件。

在`FileTransferService`类中,`DownloadFile`方法首先检查文件是否存在,如果文件不存在,则返回404错误。如果文件存在,则打开文件流并返回给客户端。`UploadFile`方法将上传的文件保存到指定的路径。

在`Program`类中,创建了一个`WebServiceHost`对象来承载文件传输服务。通过调用`Open`方法启动服务,然后通过按下任意键来停止服务。

请注意,上述代码中的文件路径是相对于当前执行程序的路径。你可以根据需要修改文件路径。

其他信息

其他资源

Top