通过Web Services上传和下载文件

通过Web Services上传和下载文件
作者:孟宪会 出自:【孟宪会之精彩世界】 发布日期:2003年11月24日 2点1分31秒

随着Internet技术的发展和跨平台需求的日益增加,Web Services的应用越来越广,我们不但需要通过Web Services传递字符串信息,而且需要传递二进制文件信息。下面,我们就分别介绍如何通过Web Services从服务器下载文件到客户端和从客户端通过Web Services上载文件到服务器。

一:通过Web Services显示和下载文件

我们这里建立的Web Services的名称为GetBinaryFile,提供两个公共方法:分别是GetImage()和GetImageType(),前者返回二进制文件字节数组,后者返回文件类型,其中,GetImage()方法有一个参数,用来在客户端选择要显示或下载的文件名字。这里我们所显示和下载的文件可以不在虚拟目录下,采用这个方法的好处是:可以根据权限对文件进行显示和下载控制,从下面的方法我们可以看出,实际的文件位置并没有在虚拟目录下,因此可以更好地对文件进行权限控制,这在对安全性有比较高的情况下特别有用。这个功能在以前的ASP程序中可以用Stream对象实现。为了方便读者进行测试,这里列出了全部的源代码,并在源代码里进行介绍和注释。

首先,建立GetBinaryFile.asmx文件:

我们可以在VS.NET里新建一个C#的aspxWebCS工程,然后“添加新项”,选择“Web服务”,并设定文件名为:GetBinaryFile.asmx,在“查看代码”中输入以下代码,即:GetBinaryFile.asmx.cs:

       using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.Services; using System.IO; namespace xml.sz.luohuedu.net.aspxWebCS { /// <summary> /// GetBinaryFile 的摘要说明。 /// Web Services名称:GetBinaryFile /// 功能:返回服务器上的一个文件对象的二进制字节数组。 /// </summary> [WebService(Namespace="http://xml.sz.luohuedu.net/", Description="在Web Services里利用.NET框架进行传递二进制文件。")] public class GetBinaryFile : System.Web.Services.WebService { #region Component Designer generated code //Web 服务设计器所必需的 private IContainer components = null; /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if(disposing && components != null) { components.Dispose(); } base.Dispose(disposing); } #endregion public class Images: System.Web.Services.WebService { /// <summary> /// Web 服务提供的方法,返回给定文件的字节数组。 /// </summary> [WebMethod(Description="Web 服务提供的方法,返回给定文件的字节数组")] public byte[] GetImage(string requestFileName) { ///得到服务器端的一个图片 ///如果你自己测试,注意修改下面的实际物理路径 if(requestFileName == null || requestFileName == "") return getBinaryFile("D://Picture.JPG"); else return getBinaryFile("D://" + 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"; } } } } 
     

一旦我们创建了上面的asmx文件,进行编译后,我们就可以编写客户端的代码来进行调用这个Web Services了。

我们先“添加Web引用”,输入:http://localhost/aspxWebCS/GetBinaryFile.asmx。下面,我们编写显示文件的中间文件:GetBinaryFileShow.aspx,这里,我们只需要在后代码里编写代码即可,GetBinaryFileShow.aspx.cs文件内容如下:

       using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Web.Services; namespace aspxWebCS { /// <summary> /// GetBinaryFileShow 的摘要说明。 /// </summary> public class GetBinaryFileShow : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 ///定义并初始化文件对象; xml.sz.luohuedu.net.aspxWebCS.GetBinaryFile.Images oImage; oImage = new xml.sz.luohuedu.net.aspxWebCS.GetBinaryFile.Images(); ///得到二进制文件字节数组; byte[] image = oImage.GetImage(""); ///转换为支持存储区为内存的流 System.IO.MemoryStream memStream = new System.IO.MemoryStream(image); ///定义并实例化Bitmap对象 Bitmap bm = new Bitmap(memStream); ///根据不同的条件进行输出或者下载; Response.Clear(); ///如果请求字符串指定下载,就下载该文件; ///否则,就显示在浏览器中。 if(Request.QueryString["Download"]=="1") { Response.Buffer = true; Response.ContentType = "application/octet-stream"; ///这里下载输出的文件名字 ok.jpg 为例子,你实际中可以根据情况动态决定。 Response.AddHeader("Content-Disposition","attachment;filename=ok.jpg"); } else Response.ContentType = oImage.GetImageType(); Response.BinaryWrite(image); Response.End(); } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } } 
     

最后,我们就编写最终的浏览页面:GetBinaryFile.aspx,这个文件很简单,只需要aspx文件即可,内容如下:

       <%@ Page language="c#" Codebehind="GetBinaryFile.aspx.cs" AutoEventWireup="false" Inherits="aspxWebCS.GetBinaryFile" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>通过Web Services显示和下载文件</title> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="GetBinaryFile" method="post" runat="server"> <FONT face="宋体"> <asp:HyperLink id="HyperLink1" NavigateUrl="GetBinaryFileShow.aspx?Download=1" runat="server">下载文件</asp:HyperLink> <br/> <!--下面是直接显示文件--> <asp:Image id="Image1" ImageUrl="GetBinaryFileShow.aspx" runat="server"></asp:Image> </FONT> </form> </body> </HTML> 
     

二:通过Web Services上载文件

向服务器上载文件可能有许多种方法,在利用Web Services上载文件的方法中,下面的这个方法应该是最简单的了。我们仍象前面的例子那样,首先建立Upload.asmx文件,其Upload.asmx.cs内容如下,里面已经做了注释:

       using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; using System.IO; namespace xml.sz.luohuedu.net.aspxWebCS { /// <summary> /// Upload 的摘要说明。 /// </summary> [WebService(Namespace="http://xml.sz.luohuedu.net/", Description="在Web Services里利用.NET框架进上载文件。")] public class Upload : System.Web.Services.WebService { public Upload() { //CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的 InitializeComponent(); } #region Component Designer generated code //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 [WebMethod(Description="Web 服务提供的方法,返回是否文件上载成功与否。")] public string UploadFile(byte[] fs,string FileName) { try { ///定义并实例化一个内存流,以存放提交上来的字节数组。 MemoryStream m = new MemoryStream(fs); ///定义实际文件对象,保存上载的文件。 FileStream f = new FileStream(Server.MapPath(".") + "//" + FileName, FileMode.Create); ///把内内存里的数据写入物理文件 m.WriteTo(f); m.Close(); f.Close(); f = null; m = null; return "文件已经上传成功。"; } catch(Exception ex) { return ex.Message; } } } } 
     

要上载文件,必须提供一个表单,来供用户进行文件的选择,下面我们就建立这样一个页面Upload.aspx,用来提供文件上载:

       <%@ Page language="c#" Codebehind="Upload.aspx.cs" AutoEventWireup="false" Inherits="aspxWebCS.Upload" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>通过Web Services上载文件</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0"> <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server" enctype="multipart/form-data"> <INPUT id="MyFile" type="file" runat="server"> <br> <br> <asp:Button id="Button1" runat="server" Text="上载文件"></asp:Button> </form> </body> </HTML> 
     

我们要进行处理的是在后代码里面,下面详细的介绍,Upload.aspx.cs:

       using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Web.Services; using System.IO; namespace aspxWebCS { /// <summary> /// Upload 的摘要说明。 /// 利用该方法通过Web Services上载文件 /// </summary> public class Upload : System.Web.UI.Page { protected System.Web.UI.HtmlControls.HtmlInputFile MyFile; protected System.Web.UI.WebControls.Button Button1; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button1_Click(object sender, System.EventArgs e) { ///首先得到上载文件信息和文件流 if(MyFile.PostedFile != null) { System.Web.HttpFileCollection oFiles; oFiles = System.Web.HttpContext.Current.Request.Files; if(oFiles.Count < 1) { Response.Write ("请选择文件。"); Response.End(); } string FilePath = oFiles[0].FileName; if(FilePath == "" || FilePath == null) { Response.Write ("请选择一个文件。"); Response.End(); } string FileName = FilePath.Substring(FilePath.LastIndexOf("//")+1); try { ///处理上载的文件流信息。 byte[] b = new byte[oFiles[0].ContentLength]; System.IO.Stream fs; xml.sz.luohuedu.net.aspxWebCS.Upload o; o = new xml.sz.luohuedu.net.aspxWebCS.Upload(); fs = (System.IO.Stream)oFiles[0].InputStream; fs.Read(b, 0, oFiles[0].ContentLength); ///调用Web Services的UploadFile方法进行上载文件。 Response.Write(o.UploadFile(b, FileName)); fs.Close(); } catch(Exception ex) { Response.Write(ex.Message); } } else { Response.Write("请选择文件"); } } } } 
     

最后,需要注意的是:在保存文件时,您应该确保指定文件的完整路径(例如,"C:/MyFiles/Picture.jpg"),并确保为 ASP.NET 使用的帐户提供要存储文件的目录的写权限。上载大文件时,可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值,例如:

       <configuration> <system.web> <httpRuntime maxRequestLength="1048576" executionTimeout="3600" /> </system.web> </configuration> 
     

其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。

另外,上载大文件时,还可能会收到以下错误信息:

       aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。 
     

如果遇到此错误信息,请增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。例如:

       <configuration> <system.web> <processModel memoryLimit="80"/> </system.web> </configuration> 
     

我在自己的机器上测试,可以上传50M以上的文件。以上代码在Windows XP + .NET 1.0 + VS.NET2002下测试通过。

  本文评论(Comments):为了保护您的电子邮件不被骚扰,地址中的个别符号转换成了全角字符!
 评论人:Jawen电子邮件:评论日期:2005年01月11日 03:00:33
 我试了一下,70多M的文件都能上载。
 评论人:playyuer电子邮件:playyuer@263.net评论日期:2004年12月10日 08:51:36
 下面怎么能一个字节一个字节的读取呢? 1M 得循环到哪辈子阿?
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();
   }

public byte[] ConvertStreamToByteBuffer(System.IO.Stream S)
{
int i = -1;
System.IO.MemoryStream tempStream = new System.IO.MemoryStream();
byte[] ba = new byte[64*1024];
//byte[] ba = new byte[S.Length];
while ((i = S.Read(ba,0,ba.Length)) != 0)
{
tempStream.Write(ba,0,i);
}
return tempStream.ToArray();
}
 评论人:laihua电子邮件:laihua0316@hotmail.com评论日期:2004年12月03日 10:47:42
 刚才试了一下,好像只有图片在同级或是上级目录下才可以正常下载,不然就会报
private void Page_Load(object sender, System.EventArgs e)
{
///定义并初始化文件对象;

xml.sz.luohuedu.net.aspxWebCS.GetBinaryFile.Images oImage;
oImage = new xml.sz.luohuedu.net.aspxWebCS.GetBinaryFile.Images();
///得到二进制文件字节数组;
byte[] image = oImage.GetImage("");
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(image);
///定义并实例化Bitmap对象
Bitmap bm = new Bitmap(memStream);
///根据不同的条件进行输出或者下载;
Response.Clear();
这个错误,比如如果我在显示图片的那个.aspx文件同级目录下有一个图片文件则可以正常下载,如果我是在images/3.jpg这样的目录就下载不了,
我的环境是:
1.1,win2003,vs2003
不知道是什么原因,希望孟子可以给我们解答一下,先谢谢,
 评论人:qrz电子邮件:qrz2000hohai@tom.com评论日期:2004年12月01日 11:42:35
 Namespace="http://xml.sz.luohuedu.net/"这个命名空间有些什么东西,有什么作用?
可不可以给份源码看看啊
谢谢!
 评论人:qrz电子邮件:qrz2000hohai@tom.com评论日期:2004年12月01日 11:40:38
 D:/study/study2/GetBinaryFile.asmx.cs(85): 声明了变量“e”,但从未使用过
D:/study/study2/GetBinaryFileShow.aspx.cs(24): 找不到类型或命名空间名称“xml”(是否缺少 using 指令或程序集引用?)
D:/study/study2/GetBinaryFileShow.aspx.cs(25): 名称“oImage”在类或命名空间“study2.GetBinaryFileShow”中不存在
D:/study/study2/GetBinaryFileShow.aspx.cs(27): 找不到类型或命名空间名称“oImage”(是否缺少 using 指令或程序集引用?)
D:/study/study2/GetBinaryFileShow.aspx.cs(44): 找不到类型或命名空间名称“oImage”(是否缺少 using 指令或程序集引用?)
D:/study/study2/Web References/localhost/Reference.map(1): 自定义工具警告: DiscoCodeGenerator 无法初始化代码生成器。没有生成任何代码。
我是全都按照上面的来做的啊,是哪里不对呢?
 评论人:Corey电子邮件:kouyujie@sohu.com评论日期:2004年09月14日 05:19:39
 用Web Service作文件上传比传统的上传方式有什么优点?
 评论人:consir电子邮件:KANGXS@21CN.COM评论日期:2004年08月15日 11:54:22
 您好!
我在http://www.webservicex.net/barcode.asmx?WSDL上调用了一个BARCODE服务,其函数为:
 function  Code39(const Code: WideString; const BarSize: Integer; const ShowCodeString: Boolean; const Title: WideString): TByteDynArray; stdcall;
请高手指点,我怎么处理返回的数据,我这样处理怎么不能将图片显示在TIMAGE组件中:
uses barcode,types,encddecd;

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
VAR ams:tmemorystream;
bcontent:tbytedynarray;
showcodestring:boolean;
isize:integer;
begin
   if rb1.Checked then
    showcodestring:=true;
   if rb2.Checked then
   showcodestring:=false;
   bcontent:=(httprio1 as  BarCodeSoap).Code39(edit1.Text,strtoint(edit2.Text),showcodestring,edit4.Text);
isize:=high(bcontent);
   ams:=tmemorystream.Create;
  try
   ams.SetSize(isize);
   move(bcontent[0],ams.memory^,isize);
   ams.SaveToFile('c:/barcode.jpeg');
   image1.Picture.LoadFromFile('c:/barcode.jpeg');
   finally
   ams.Free;
   end;
end;
关键是这一句:image1.Picture.LoadFromFile('c:/barcode.jpeg');
总是出现错误。万分火急,请不惜赐教!!!
 评论人:tonton98电子邮件:tonton98@sina.com评论日期:2004年07月24日 02:44:28
 Namespace="http://xml.sz.luohuedu.net/"这个命名空间起什么作用请讲一下好吗?直接访问这个网址,又到了这个网站拉,给讲讲这个吧。
 评论人:leon电子邮件:leson_li@maxense.com评论日期:2004年07月23日 04:36:58
 關於大組件上傳,及斷點傳的問題
 评论人:taole电子邮件:luwei_1983_1001@163.com评论日期:2004年07月23日 09:21:22
 我是初学   看了此断代码可上传位图文件   如果要传任意类型的文件应该怎么做呢?请指教
万分感谢!!!
 评论人:hjiay电子邮件:hjy_0716@163.com评论日期:2004年07月15日 10:29:21
 要是早点看到就爽了啊
 评论人:sanyanhu电子邮件:sanyanhu@hotmail.com评论日期:2004年07月02日 10:27:41
 这与直接用saveas的方法上传文件有什么区别,多余还得调web服务
 评论人:ts电子邮件:stang_tang@edg.com.cn评论日期:2004年06月30日 11:18:41
 能不能给个源码啊,谢谢
 评论人:zhangjianhua电子邮件:jlzjh@163.com评论日期:2004年05月25日 04:07:42
 哦,是访问权限问题,呵!呵!不好意思
 评论人:zhangjianhua电子邮件:jlzjh@163.com评论日期:2004年05月25日 03:36:49
 使用了无效参数。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentException: 使用了无效参数。

源错误: 


行 29:  System.IO.MemoryStream memStream = new System.IO.MemoryStream(image);
行 30:  ///定义并实例化Bitmap对象
行 31:  Bitmap bm = new Bitmap(memStream);
行 32:  ///根据不同的条件进行输出或者下载;
行 33:  Response.Clear();
 

源文件: f:/inetpub/wwwroot/csharp/getbinaryfile.aspx.cs    行: 31 

堆栈跟踪: 


[ArgumentException: 使用了无效参数。]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   aspxWebCS.GetBinaryFileShow.Page_Load(Object sender, EventArgs e) in f:/inetpub/wwwroot/csharp/getbinaryfile.aspx.cs:31
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731
 评论人:chuankun电子邮件:yml20@163.com评论日期:2004年05月19日 02:59:10
 使用了无效参数。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentException: 使用了无效参数。

源错误: 


行 29:  System.IO.MemoryStream memStream = new System.IO.MemoryStream(image);
行 30:  ///定义并实例化Bitmap对象
行 31:  Bitmap bm = new Bitmap(memStream);
行 32:  ///根据不同的条件进行输出或者下载;
行 33:  Response.Clear();
 

源文件: f:/inetpub/wwwroot/csharp/getbinaryfile.aspx.cs    行: 31 

堆栈跟踪: 


[ArgumentException: 使用了无效参数。]
   System.Drawing.Bitmap..ctor(Stream stream) +271
   aspxWebCS.GetBinaryFileShow.Page_Load(Object sender, EventArgs e) in f:/inetpub/wwwroot/csharp/getbinaryfile.aspx.cs:31
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +731

 
 评论人:chuankun电子邮件:yml20@163.com评论日期:2004年05月19日 02:57:42
 错误提示:
使用了无效参数。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentException: 使用了无效参数。

源错误: 


行 29:  System.IO.MemoryStream memStream = new System.IO.MemoryStream(image);
行 30:  ///定义并实例化Bitmap对象
行 31:  Bitmap bm = new Bitmap(memStream);
行 32:  ///根据不同的条件进行输出或者下载;
行 33:  Response.Clear();

请问是怎么回事
 评论人:老王电子邮件:wyg13319273881@126.com评论日期:2004年04月15日 11:11:55
 大侠,能给一份源码吗?谢谢!!!!!!!!!!
 评论人:老王电子邮件:wyg13319273881@126.com评论日期:2004年04月15日 09:42:19
 c:/inetpub/wwwroot/webservicesclient/getbinaryfileshow.aspx.cs(51,4): error CS0246: 找不到类型或命名空间名称“xml”(是否缺少 using 指令或程序集引用?)
c:/inetpub/wwwroot/webservicesclient/getbinaryfileshow.aspx.cs(52,4): error CS0103: 名称“oImage”在类或命名空间“WebServicesClient.GetBinaryFileShow”中不存在
c:/inetpub/wwwroot/webservicesclient/getbinaryfileshow.aspx.cs(54,19): error CS0246: 找不到类型或命名空间名称“oImage”(是否缺少 using 指令或程序集引用?)
c:/inetpub/wwwroot/webservicesclient/getbinaryfileshow.aspx.cs(71,28): error CS0246: 找不到类型或命名空间名称“oImage”(是否缺少 using 指令或程序集引用?)

private void Page_Load(object sender, System.EventArgs e)
{
///定义并初始化文件对象;

xml.sz.luohuedu.net.aspxWebCS.GetBinaryFile.Images oImage;
oImage = new xml.sz.luohuedu.net.aspxWebCS.GetBinaryFile.Images();
///得到二进制文件字节数组;
byte[] image = oImage.GetImage("");
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(image);
///定义并实例化Bitmap对象
Bitmap bm = new Bitmap(memStream);
///根据不同的条件进行输出或者下载;
Response.Clear();
 评论人:sheyu8电子邮件:评论日期:2004年04月11日 03:42:51
 NET Framework 常规参考   
ASP.NET 配置 | ASP.NET 设置架构
要求
包含于:system.web

Web 平台:IIS 5.0、IIS 5.1、IIS 6.0

配置文件:Machine.config

配置节处理程序:System.Web.Configuration.ProcessModelConfigurationHandler
配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置。processModel 节只能在 Machine.config 文件中进行设置,并且将影响服务器上运行的所有 ASP.NET 应用程序。

 评论人:电子邮件:评论日期:2004年03月20日 08:42:28
 怎麼搞的,沒有vb.net 的.....
 评论人:king电子邮件:zhengjiang_king@163.com评论日期:2004年03月17日 07:30:02
 可不可以把源代码发到我的邮箱
 评论人:tony电子邮件:tonypei@vip.sina.com评论日期:2004年03月05日 09:58:10
 你好啊,Namespace="http://xml.sz.luohuedu.net/"这个命名空间到底起了什么作用呢,我看到用的都是namespace xml.sz.luohuedu.net.aspxWebCS这个啊,烦请讲一下这两者之间的区别好吗,多谢了:)
 评论人:comy电子邮件:bestcomy@hotmail.com评论日期:2004年02月18日 01:12:38
 由文章所列出的错误信息可以看出,并未解决如何分块上传大文件的问题
 评论人:本站管理员电子邮件:评论日期:2004年01月30日 11:08:33
 不支持断点续传
 评论人:chenrui电子邮件:chenrui@qingdaonews.com评论日期:2004年01月12日 08:41:01
 请问能不能做到断点续传呢。
 评论人:ydyd电子邮件:for0@163.com评论日期:2004年01月09日 01:51:52
 namespace aspxWebCS下用了嵌套类?类可以嵌套吗?什么情况下用呢?
  发表评论(Add Comments) [注意:如果您输入电子邮件,将有利于您得到及时的回复。]【请勿发表国家法律不允许的言论,谢谢!!】
用户名: 电子邮件:

[Valid RSS]Valid CSS!
【孟宪会之精彩世界】  ©【孟宪会之精彩世界】®孟宪会制作1999-2005年 版权所有 特别感谢:Ahui

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值