知识大全 如何通过Web Services上传和下载文件
Posted 文件
篇首语:生气是拿别人做错的事来惩罚自己。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何通过Web Services上传和下载文件相关的知识,希望对你有一定的参考价值。
如何通过Web Services上传和下载文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
随着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 aspxWebCS
///
/// GetBinaryFile 的摘要说明
/// Web Services名称 GetBinaryFile
/// 功能 返回服务器上的一个文件对象的二进制字节数组
///
[WebService(Namespace=
Description= 在Web Services里利用 NET框架进行传递二进制文件 )]
public class GetBinaryFile : System Web Services WebService
#region Component Designer generated code
//Web 服务设计器所必需的
private IContainer ponents = null;
///
/// 清理所有正在使用的资源
///
protected override void Dispose( bool disposing )
if(disposing &&ponents != null)
ponents Dispose();
base Dispose(disposing);
#endregion
public class Images: System Web Services WebService
///
/// Web 服务提供的方法 返回给定文件的字节数组
///
[WebMethod(Description= Web 服务提供的方法 返回给定文件的字节数组 )]
public byte[] GetImage(string requestFileName)
///得到服务器端的一个图片
///如果你自己测试 注意修改下面的实际物理路径
if(requestFileName == null || requestFileName == )
return getBinaryFile( D:\\Picture JPG );
else
return getBinaryFile( D:\\ + requestFileName);
///
/// getBinaryFile 返回所给文件路径的字节数组
///
///
public byte[] getBinaryFile(string filename)
if(File Exists(filename))
try
///打开现有文件以进行读取
FileStream s = File OpenRead(filename);
return ConvertStreamToByteBuffer(s);
catch(Exception e)
return new byte[ ];
else
return new byte[ ];
///
/// ConvertStreamToByteBuffer 把给定的文件流转换为二进制字节数组
///
///
public byte[] ConvertStreamToByteBuffer(System IO Stream theStream)
int b ;
System IO MemoryStream tempStream = new System IO MemoryStream();
while((b =theStream ReadByte())!= )
tempStream WriteByte(((byte)b ));
return tempStream ToArray();
[WebMethod(Description= Web 服务提供的方法 返回给定文件类型 )]
public string GetImageType()
///这里只是测试 您可以根据实际的文件类型进行动态输出
return image/jpg ;
观看地址 进入讨论组讨论
一旦我们创建了上面的asmx文件 进行编译后 我们就可以编写客户端的代码来进行调用这个Web Services了
我们先 添加Web引用 输入 下面 我们编写显示文件的中间文件 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
///
/// GetBinaryFileShow 的摘要说明
///
public class GetBinaryFileShow : System Web UI Page
private void Page_Load(object sender System EventArgs e)
// 在此处放置用户代码以初始化页面
///定义并初始化文件对象
aspxWebCS GetBinaryFile Images oImage;
oImage = new 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 ]== )
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 NEeb 窗体设计器所必需的
//
InitializeComponent();
base OnInit(e);
///
/// 设计器支持所需的方法 不要使用代码编辑器修改
/// 此方法的内容
///
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" %> Inherits= aspxWebCS GetBinaryFile %>
相关参考
Java做的比较完善的FTP连接上传下载文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这是
知识大全 百度文库中如果上传了免费的文件,一旦被别的网友下载后,系统给奖励多少财富值
百度文库中如果上传了免费的文件,一旦被别的网友下载后,系统给奖励多少财富值?谢谢!1分百度文库免费文件被下载,能奖励多少财富值x<=200,系统给每次1分200<x<500,不给分5
知识大全 使用 XML Web services 进行 Web 编程
使用XMLWebservices进行Web编程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! X
知识大全 用Web Services来整合.NET和J2EE
用WebServices来整合.NET和J2EE 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Visual中的XMLWebservices入门 目录 简介用托管代码编写的XMLWebservices使用VisualStudio创建XMLWebservices使用VisualStudio
知识大全 SOA and Web services 新手入门
SOAandWebservices新手入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 内容管
知识大全 JAVA处理含有DataSet的web services
JAVA处理含有DataSet的webservices 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 调用.NET XML Web Services返回数据集合二
调用.NETXMLWebServices返回数据集合二 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 使用VB或VC#访问XML Web services
使用VB或VC#访问XMLWebservices 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 SOA and Web services 新手入门i学习
SOAandWebservices新手入门i学习 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!