欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net Web Services上传和下载文件(完整代码)第1/2页】,下面是详细的讲解!
asp.net Web Services上传和下载文件(完整代码)第1/2页
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Diagnostics;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.Services;
usingSystem.IO;
namespacexml.sz.luohuedu.net.aspxWebCS
{
///<summary>
///GetBinaryFile的摘要说明。
///WebServices名称:GetBinaryFile
///功能:返回服务器上的一个文件对象的二进制字节数组。
///</summary>
[WebService(Namespace="http://xml.sz.luohuedu.net/",
Description="在WebServices里利用.NET框架进行传递二进制文件。")]
publicclassGetBinaryFile:System.Web.Services.WebService
{
#regionComponentDesignergeneratedcode
//Web服务设计器所必需的
privateIContainercomponents=null;
///<summary>
///清理所有正在使用的资源。
///</summary>
protectedoverridevoidDispose(booldisposing)
{
if(disposing&&components!=null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
publicclassImages:System.Web.Services.WebService
{
///<summary>
///Web服务提供的方法,返回给定文件的字节数组。
///</summary>
[WebMethod(Description="Web服务提供的方法,返回给定文件的字节数组")]
publicbyte[]GetImage(stringrequestFileName)
{
///得到服务器端的一个图片
///如果你自己测试,注意修改下面的实际物理路径
if(requestFileName==null||requestFileName=="")
returngetBinaryFile("D:\\Picture.JPG");
else
returngetBinaryFile("D:\\"+requestFileName);
}
///<summary>
///getBinaryFile:返回所给文件路径的字节数组。
///</summary>
///<paramname="filename"></param>
///<returns></returns>
publicbyte[]getBinaryFile(stringfilename)
{
if(File.Exists(filename))
{
try
{
///打开现有文件以进行读取。
FileStreams=File.OpenRead(filename);
returnConvertStreamToByteBuffer(s);
}
catch(Exceptione)
{
returnnewbyte[0];
}
}
else
{
returnnewbyte[0];
}
}
///<summary>
///ConvertStreamToByteBuffer:把给定的文件流转换为二进制字节数组。
///</summary>
///<paramname="theStream"></param>
///<returns></returns>
publicbyte[]ConvertStreamToByteBuffer(System.IO.StreamtheStream)
{
intb1;
System.IO.MemoryStreamtempStream=newSystem.IO.MemoryStream();
while((b1=theStream.ReadByte())!=-1)
{
tempStream.WriteByte(((byte)b1));
}
returntempStream.ToArray();
}
[WebMethod(Description="Web服务提供的方法,返回给定文件类型。")]
publicstringGetImageType()
{
///这里只是测试,您可以根据实际的文件类型进行动态输出
return"image/jpg";
}
}
}
}
一旦我们创建了上面的asmx文件,进行编译后,我们就可以编写客户端的代码来进行调用这个Web Services了。
我们先“添加Web引用”,输入:http://localhost/aspxWebCS/GetBinaryFile.asmx。下面,我们编写显示文件的中间文件:GetBinaryFileShow.aspx,这里,我们只需要在后代码里编写代码即可,GetBinaryFileShow.aspx.cs文件内容如下:
最后,我们就编写最终的浏览页面:GetBinaryFile.aspx,这个文件很简单,只需要aspx文件即可,内容如下:
二:通过Web Services上载文件
向服务器上载文件可能有许多种方法,在利用Web Services上载文件的方法中,下面的这个方法应该是最简单的了。我们仍象前面的例子那样,首先建立Upload.asmx文件,其Upload.asmx.cs内容如下,里面已经做了注释:
要上载文件,必须提供一个表单,来供用户进行文件的选择,下面我们就建立这样一个页面Upload.aspx,用来提供文件上载:
我们要进行处理的是在后代码里面,下面详细的介绍,Upload.aspx.cs:.
最后,需要注意的是:在保存文件时,您应该确保指定文件的完整路径(例如,"C:\MyFiles\Picture.jpg"),并确保为 ASP.NET 使用的帐户提供要存储文件的目录的写权限。上载大文件时,可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值,例如:
其中: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 属性的值。例如:
我在自己的机器上测试,可以上传50M以上的文件。以上代码在Windows XP + .NET 1.0 + VS.NET2002下测试通过。
关于asp.net Web Services上传和下载文件(完整代码)第1/2页的用户互动如下:
相关问题:c#.net上传和下载文件代码
答:public static void FileDownload(string FileName) { String FullFileName = System.Web.HttpContext.Current.Server.MapPath(FileName); FileInfo DownloadFile = new FileInfo(FullFileName); System.Web.HttpContext.Current.Response.Clear... >>详细
相关问题:asp.net 绑定数据 在web.config文件里面的代码要怎...
答:一种格式,初学者不要这样写,在中写会更直观。 还有就是不要SQL不要使用Window登入模式,会在其他服务器上无法使用 >>详细
相关问题:关于 asp.net 虚拟主机所需要提供的实现伪静态的文...
答:谁说的要写呀,完全是多此一举,我就是做空间商的,还没有听说NET要自己写规则,直接放上去,然后服务器IIS,在你的FTP下设置一下就可以了 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
