利用WebService实现远程服务器文件的上传和下载
先新建一个 WebService项目UpDownFile,里面自动建了一个叫Service1的asmx和cs文件,看不顺眼这个名字的就把它重命名吧,我就把它 重命名为了UpDownFile.asmx,把里面的class也重命名为UpDownFile了,这样看起来顺眼多了
UpDownFile.asmx.cs的代码如下:
usingSystem;
usingSystem.Data;
usingSystem.Web;
usingSystem.Collections;
usingSystem.Web.Services;
usingSystem.Web.Services.Protocols;
usingSystem.ComponentModel;
usingSystem.IO;
namespaceUpDownFile
{
/// <summary>
/// UpDownFile 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
= WsiProfiles.BasicProfile1_1)]
false)]
public class UpDownFile : System.Web.Services.WebService
{
//将Stream流转换为byte数组的方法。
//PS:原本想把这个方法也当做WebMethod的,因为客户端在上传文件时也要调用该方法,后来发现Stream类型的不能通过WebService传输。。。:(
public byte[] ConvertStreamToByteBuffer(Stream s)
{
= new MemoryStream();
int b;
while ((b = s.ReadByte()) != -1)
{
byte)b);
return ms.ToArray();
//上传文件至WebService所在服务器的方法,这里为了操作方法,文件都保存在UpDownFile服务所在文件夹下的File目录中
[WebMethod]
public bool Up(byte[] data, string filename)
{
try
{
= File.Create(Server.MapPath("File/") + filename);
0, data.Length);
return true;
catch
{
return false;
//下载WebService所在服务器上的文件的方法
[WebMethod]
public byte[] Down(string filename)
{
string filepath = Server.MapPath("File/") + filename;
if (File.Exists(filepath))
{
try
{
= File.OpenRead(filepath);
return ConvertStreamToByteBuffer(s);
catch
{
return new byte[0];
else
{
return new byte[0];
接下来就是在客户端网站中调用了,先添加Web引用,干脆引用名也用UpDownFile算了
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
namespaceHelloWorld
{
public partial class DownFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
= new UpDownFile.UpDownFile();
byte[] file = down.Down(Request.QueryString["filename"].ToString());
接下来是上传的演示文件UpFile.aspx
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
namespaceHelloWorld
{
public partial class UpFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
protected void Button1_Click(object sender, EventArgs e)
{
//保存到远程File文件夹
//FileUpload1是aspx页面的一个FileUpload控件
UpDownFile.UpDownFile up = new UpDownFile.UpDownFile();
"\\") + 1));
protected byte[] ConvertStreamToByteBuffer(Stream s)
{
= new MemoryStream();
int b;
while ((b = s.ReadByte()) != -1)
{
byte)b);
return ms.ToArray();
其实主要是UpDownFile.asmx.cs这个Web服务文件,客户端怎么调用就随便了。大家看到了,Up和Down方法中传输的都是byte[]数组,因为WebService不支持Stream传输,那就把文件转换为二进制数组来传递。
此 外也可以制作利用WebService远程存储数据库的东西,因为有时候远程服务器的1433端口不能开放,只能开放80,那WebService就派上 用场了。要注意的是,DataTable不能通过WebService传输,只能附在DataSet上来传输,此外很多类型也不可以通过 WebService传,具体可以通过其传输的类型请参考书籍
利用WebService实现远程服务器文件的上传和下载相关推荐
- 利用 WebService实现远程服务器文件的上传和下载
有时候我们通常需要把上传的图片或其他文件放在其他服务器上,以便和网站服务器分开,这时候ASP.NET的WebService就派上大用场了.我们可以在文件服务器上运行一个WebService,提供上传和 ...
- dw本地文件传不到远程服务器,用DW上传站点 怎么设置远程服务器
用DW上传站点 怎么设置远程服务器 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 ...
- 如何搭建FTP服务器实现文件的上传及下载?(亲测有效)
FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Protoc ...
- Hadoop环境下用java代码实现hdfs远程文件的上传和下载
Hadoop环境下用java代码实现hdfs远程文件的上传和下载 文章目录 Hadoop环境下用java代码实现hdfs远程文件的上传和下载 一.新建maven工程 二.文件的上传 三.文件的下载 四 ...
- ASP.NET实现文件的上传和下载
最近做的一个高校网站中涉及到了上传和下载文件的需求(具体需求为:网站公布的通知,在后台要能给每个通知添加附件,在前台要能显示并下载附件),之前只是学习过关于上传的 理论知识,这里实践了一下下,与大家分 ...
- Windows FTP 服务器实现只能上传不能下载或删除
Windows FTP 服务器实现只能上传不能下载或删除 需求:在 Windows 系统上搭建一个 FTP 服务器,用于收发作业. 其中单独支持下载文件,或是上传文件的需求,比较容易实现.但是有一种需 ...
- java图片上传下载_java实现文件的上传和下载
1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...
- SpringMVC实现文件的上传和下载
SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...
- Akka实战:HTTP大文件断点上传、下载,秒传
2019独角兽企业重金招聘Python工程师标准>>> 访问:https://github.com/yangbajing/scala-applications/tree/master ...
最新文章
- Centos-6 编译安装实现LAMP,wordpress最新版
- 面向程序员的数据库访问性能优化法则
- JAVA——一次性读取或者写入文本文件所有内容
- Chrome新的语言API,让您的浏览器说话
- CSDN-markdown编辑器语法速查手册
- srsLTE源码学习:生成多播信道表gen_mch_tables
- Compose 1.0 即将发布,你准备好了吗?
- Java 线程池的复用原理
- android 图库 imgcache.idx,iOS开发 - 关于列表图片渲染内存暴增问题
- TIDB介绍 新数据库趋势
- 【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN Attention Pointer Network Recursive
- php array函数 array_search 搜索键值, 返回键名
- Silverlight 2 中简单的2.5D控件
- python制作自动交易软件排名_A股股票自动化交易软件的使用和简易说明书,根据多年经验使用python开发...
- mysql索引失效情况
- 【转】找工时间线和心得
- Excel学习系列(1)--以文本存储的数字转换为数字
- 赞奇科技英特尔共图视觉计算“云”上大作为
- 如何让搜索引擎搜索到自己的个人博客网站(如何提交网站到各搜索引擎,如百度、必应Bing,以及提交页面URL的地址)
- 集团企业用户收不到彩信手机报是怎么回事?
热门文章
- QT的QQmlContext类的使用
- QML基础类型之list
- c++容器共性机制研究
- 4.K-MEANS聚类算法
- B05_NumPy从数值范围创建数组(numpy.arange,numpy.linspace,numpy.logspace)
- SSh结合Easyui实现Datagrid的分页显示
- 打开高效文本编辑之门_调用Linux的sed命令
- php是范例,php基础范例
- C语言之获取类型存储空间
- [目标检测] Faster R-CNN 深入理解 改进方法汇总