日期:2014-05-18  浏览次数:20898 次

怎样写一个返回数据流的函数?
我想在web service上写一个返回数据流的函数。比如想下载这个文件11.dat

通过客户端访问web service上的这个函数的时候,可以把返回的数据流以文件的形式保存在客户机的硬盘里。

请问怎么做?

------解决方案--------------------
C# code

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Runtime.Remoting.Messaging;
/// <summary>
/// MyWebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MyWebService : System.Web.Services.WebService {

    public MyWebService () {

        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }
/// <summary>
    /// 获取服务器上的文件流
    /// </summary>
    /// <param name="fileName">服务器上的文件名</param>
    [WebMethod]
    public void GetFileData(string fileName)
    {
        byte[] buffer = null;//保存文件内容的字节数组
        //取得文件在服务器上的物理地址
        fileName = Server.MapPath(".") + "\\" + fileName;
        if (System.IO.File.Exists(fileName))
        {
            using (System.IO.FileStream stream = new System.IO.FileStream(fileName, System.IO.FileMode.Open))
            {
                //实例化字节数组
                buffer = new byte[(int)(stream.Length)];
                //将文件内容一次性读取到字节数组中
                stream.Read(buffer, 0, buffer.Length);
            }

        }
        return buffer;//将字节数组的内容返回
    }
}

------解决方案--------------------
客户端接收byte[],然后利用FileStream写入到本地文件就行了。
------解决方案--------------------
C# code

[WebMethod]
    public [color=#FF0000]void [/color]GetFileData(string fileName)//??????????????
    {
        byte[] buffer = null;//保存文件内容的字节数组
        //取得文件在服务器上的物理地址
        fileName = Server.MapPath(".") + "\\" + fileName;
        if (System.IO.File.Exists(fileName))
        {
            using (System.IO.FileStream stream = new System.IO.FileStream(fileName, System.IO.FileMode.Open))
            {
                //实例化字节数组
                buffer = new byte[(int)(stream.Length)];
                //将文件内容一次性读取到字节数组中
                stream.Read(buffer, 0, buffer.Length);
            }

        }
        return buffer;//将字节数组的内容返回
    }

------解决方案--------------------
public byte[] GetFileData(string fileName)

------解决方案--------------------
自己去申请的啊,MS要审核的
------解决方案--------------------
up