ManageFile.MyFile oImage=new TongBuTransfer.ManageFile.MyFile();
///得到二进制文件字节数组;
byte[] image = oImage.GetImage("");
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(image);
///定义并实例化Bitmap对象
//Bitmap bm = new Bitmap(memStream);

FileStream myfile = new FileStream(Server.MapPath("."),FileMode.Create);
memStream.WriteTo(myfile);
///根据不同的条件进行输出或者下载;
Response.Clear();
///如果请求字符串指定下载,就下载该文件;
///否则,就显示在浏览器中。
Response.Buffer = true;
Response.ContentType = "application/octet-stream";
///这里下载输出的文件名字 ok.jpg 为例子,你实际中可以根据情况动态决定。
Response.AddHeader("Content-Disposition","attachment;filename="+filename);

Response.BinaryWrite(image);
Response.End();
webservice(部分代码):
public class MyFile: System.Web.Services.WebService
{ public MyFile()
{
//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
}
#region 组件设计器生成的代码

//Web 服务设计器所必需的
private IContainer components = null;

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}

#endregion // WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键 // [WebMethod]
// public string HelloWorld()
// {
// return "Hello World";
// }
/// <summary>
/// Web 服务提供的方法,返回给定文件的字节数组。
/// </summary>
[WebMethod(Description="Web 服务提供的方法,返回给定文件的字节数组")]
public byte[] GetImage(string requestFileName)
{
///得到服务器端的一个图片
///如果你自己测试,注意修改下面的实际物理路径
if(requestFileName == null || requestFileName == "")
return getBinaryFile(Server.MapPath("/tbfile"+"\\")+"FileError.jpg");
else
return getBinaryFile(Server.MapPath("/tbfile"+"\\") + requestFileName);
} /// <summary>
/// getBinaryFile:返回所给文件路径的字节数组。
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public byte[] getBinaryFile(string filename)
{
if(File.Exists(filename))
{
try
{
///打开现有文件以进行读取。
FileStream s = File.OpenRead(filename);
return ConvertStreamToByteBuffer(s);
}
catch(Exception e)
{
return new byte[0];
}
}
else
{
return new byte[0];
}
}
/// <summary>
/// ConvertStreamToByteBuffer:把给定的文件流转换为二进制字节数组。
/// </summary>
/// <param name="theStream"></param>
/// <returns></returns>
public byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)
{
int b1;
System.IO.MemoryStream tempStream = new System.IO.MemoryStream();
while((b1=theStream.ReadByte())!=-1)
{
tempStream.WriteByte(((byte)b1));
}
return tempStream.ToArray();
} [WebMethod(Description="Web 服务提供的方法,返回给定文件类型。")]
public string GetImageType()
{
///这里只是测试,您可以根据实际的文件类型进行动态输出
return "image/jpg";
}

解决方案 »

  1.   

    送分http://community.csdn.net/Expert/topic/4927/4927379.xml?temp=.6112329
      

  2.   

    传递数据时,不应使用byte数组,可以将其转成base64字符串,在调用时再转成byte数组
      

  3.   

    to jimu8130:不知道大大你是怎么测试的?你有没有把下载有关下载类型(比如可执行文件,txt文件,ini文件)代码给写出来,孟子的是下载图片,不知道你是如何测试的?
      

  4.   

    http://community.csdn.net/Expert/topic/4930/4930269.xml?temp=.391659
    see