WebService.C# 网络盘

hanbb1982 2010-06-12 08:50:03
谁有WebService.C# 做的C/S架构的网络盘的例子,如有源码例子,请发个邮件到hamby_2010@foxmail.com.小弟感激不尽!
...全文
167 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
llddyy123wq 2010-06-13
  • 打赏
  • 举报
回复
我貌似找到一个。但是不太全
http://book.csdn.net/bookfiles/267/10026711876.shtml
9.5 实现网络硬盘
本节主要介绍网络硬盘的具体实现。它实现了一个网络管理的文件系统,如文件的上载、下载、查看、移动、搜索,以及目录层次的显示功能等。主要功能的具体描述如下:

(1)接口设计;

(2)数据访问层设计;

(3)创建文件夹;

(4)重命名文件夹;

(5)删除文件夹或文件;

(6)重命名文件;

(7)移动文件或文件夹;

(8)查看文件属性。

llddyy123wq 2010-06-13
  • 打赏
  • 举报
回复
也正在搞这方面的功能。强烈的热心关注中。
期待有人来解决楼主的问题。近而偷学哈。呵呵
hanbb1982 2010-06-13
  • 打赏
  • 举报
回复
sardineany,能否发给我看看谢谢 .
dcj_gis2006 2010-06-13
  • 打赏
  • 举报
回复
顶一个
oneatree 2010-06-13
  • 打赏
  • 举报
回复
mark
sardineany 2010-06-13
  • 打赏
  • 举报
回复
还有要说明的就是gridcontrol 和 treelist 都是DEV控件, LZ可以用 gridview 和treeview 他们原理一样的。
sardineany 2010-06-13
  • 打赏
  • 举报
回复
这是上传的
客户端
private void button3_Click_1(object sender, EventArgs e)
{
if (txtFileName.Text != "")
{
label1.Visible = true;
int step = 1000000; //步数
byte[] byData = new byte[step]; //定义字节数组
FileInfo fileInfo = new FileInfo(txtFileName.Text); //定义一个fileInfo 来获取文件的详细信息
if (MessageBox.Show(" 确定上传么?", "上传文件", MessageBoxButtons.YesNo) == DialogResult.Yes)
{

progressBar.Maximum = (int)(fileInfo.Length / step); //进度栏停止前的最大值设为文件的长度/速度
progressBar.Step = 1; //增加进度栏的当前位置时所根据的数量
progressBar.Visible = true; //设置为可见
FileStream fileStream = null; //定义fileStream用于对文件进行读写
long sentCout = (fileInfo.Length / step); //
int lastLength = (int)(fileInfo.Length % step); //
try
{
fileStream = new FileStream(txtFileName.Text, FileMode.Open, FileAccess.Read); //三个参数作用分别是要读的文件的文件名,打开文件所采用的模式, Read、Write 还是 ReadWrite 文件访问权限来打开文件

for (long i = 0; i < sentCout; i++)
{
long position = fileStream.Position;     //获取此流的当前位置
fileStream.Read(byData, 0, step); //从流中读取字节块并将该数据写入给定缓冲区中,三个参数的含义1.返回时包含指定的字节数组。2.从0处开始读取字节。3.最多参数的字节数为step
webtest.FileUp(byData, fileInfo.Name, step, position);//调用webservice方法,进行数据上传
progressBar.PerformStep(); //以 Step 屬性的數量前移進度列的目前位置
}
if (lastLength != 0)
{
long position = fileStream.Position; //获取此流的当前位置
fileStream.Read(byData, 0, lastLength); //从流中读取字节块并将该数据写入给定缓冲区中
webtest.FileUp(byData, fileInfo.Name, lastLength, position);//调用webservice方法,进行数据上传
progressBar.PerformStep(); //以 Step 屬性的數量前移進度列的目前位置
}
int a = 10;
webtest.UpFile(fileInfo.Name, a, webtest.Up() + fileInfo.Name);
webtest.insertEbook(fileInfo.Name, a);

MessageBox.Show("文件上传成功!");
label1.Text = "文件" + fileInfo.Name + "上传成功";
}
catch (Exception ex)
{
MessageBox.Show("上传错误,请与管理员联系/n" + ex.Message);
}
finally
{
fileStream.Close(); //关闭当前流
fileStream.Dispose();//释放由IO使用的所有资源
DataSet dataSet = webtest.show();
treeList1.DataSource = dataSet.Tables[0];
treeList1.ExpandAll();
}
progressBar.Value = 0;
progressBar.Visible = false;

// }
}
}
else
{
MessageBox.Show("请选择上传文件");
}

}


webservice端
 [WebMethod]
public void FileUp(byte[] byData, string filename, int step, long position)
{
string filePath = Server.MapPath(@"~\Up\" + filename); //设置路径


FileStream fileStream = new FileStream(filePath, FileMode.Append); //文件读取流定义并且初始化
try
{

fileStream.Position = position; //设置流的当前位置为
fileStream.Write(byData, 0, step);//使用从缓冲区读取的数据将字节块写入该流
}
catch
{

}
finally
{
fileStream.Close();       //关闭
}
}


我的采用的方法是将文件信息和路径保存到SQL中,上面的insert 的webservice方法就是操作数据库。LZ可以灵活一点运用。
有问题再问吧。我一直在
sardineany 2010-06-13
  • 打赏
  • 举报
回复
客户端:
  private void Down_ButtonClick(object sender, EventArgs e)
{
int step = 10;
byte[] byData = new byte[step];

SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "所有文件(*.*)|*.*|text|*.txt";
saveFileDialog.ValidateNames = true;
saveFileDialog.CheckPathExists = true;
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
saveFileDialog.FileName = fName;
FileInfo fileInfo = new FileInfo(selectItem);
long fileLength = fileInfo.Length;

if (saveFileDialog.ShowDialog() == DialogResult.OK)
{

progressBar.Maximum = (int)(fileLength / step);
progressBar.Step = 1;
progressBar.Visible = true;
FileStream fileStream = null;
long sentCout = (fileLength / step);
int lastStep = (int)(fileLength % step);
try
{
fileStream = new FileStream(saveFileDialog.FileName, FileMode.Append, FileAccess.Write);

for (long i = 0; i < sentCout; i++)
{
long position = fileStream.Position;
byData = webtest.FileDownlond(fName, step, position);
fileStream.Write(byData, 0, step);
progressBar.PerformStep();
}

if (lastStep != 0)
{
long position = fileStream.Position;
byData = webtest.FileDownlond(fName, step, position);
fileStream.Write(byData, 0, step);
progressBar.PerformStep();
}

MessageBox.Show("文件下载成功!");
}

catch (Exception ex)
{
MessageBox.Show("下载错误,请与管理员联系/n" + ex.Message);
}
finally
{ fileStream.Close(); }
progressBar.Value = 0;
progressBar.Visible = false;
// refreshGridViewInformation();
}



}


webservice端

[WebMethod]
public byte[] FileDownlond(string filename, int step, long position)
{
byte[] byData = new byte[step];
string filePath = Server.MapPath(@"~\Up\" + filename);

FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
fileStream.Position = position;
fileStream.Read(byData, 0, step);
}
catch
{
throw;
}
finally
{
fileStream.Close();
}
return byData;
}

这里需要说明的是要在服务器上建立一个UP文件夹。
以上代码实现的下载功能。
sardineany 2010-06-12
  • 打赏
  • 举报
回复
就是文件上传下载到服务器是吧,我做了一个,用到了DEV,不知道可以么
JiuchunYoung 2010-06-12
  • 打赏
  • 举报
回复
http://group.gimoo.net/review/27657

这里还有一个
JiuchunYoung 2010-06-12
  • 打赏
  • 举报
回复
http://hi.baidu.com/wangjunwangjuna/blog/item/0d94f5f2e6153d19b07ec582.html

可以看一下 是否 符合你的要求
JiuchunYoung 2010-06-12
  • 打赏
  • 举报
回复
http://sourceforge.net/projects/whd/
llj46685758 2010-06-12
  • 打赏
  • 举报
回复
要把文件首先在服务器端转换为文件流形式进行传输,然后到达客户端以后,在客户端接收时再将文件流进行解析,转换成文件存入磁盘 代码我就不写了 IO流的操作应该都会 网上面也很多
阿摩1 2010-06-12
  • 打赏
  • 举报
回复
顶一个,学习
sardineany 2010-06-12
  • 打赏
  • 举报
回复
顶一个。。。
zfb312 2010-06-12
  • 打赏
  • 举报
回复

友情帮顶。
xk1126 2010-06-12
  • 打赏
  • 举报
回复
不懂,帮顶!~~~~~~~~~~~~
捷哥1999 2010-06-12
  • 打赏
  • 举报
回复
帮你找到了一个sourceforge上的开源项目:
WHD - Web Hard Disk
捷哥1999 2010-06-12
  • 打赏
  • 举报
回复
搬个板凳回来看帖。
hanbb1982 2010-06-12
  • 打赏
  • 举报
回复
wcf不熟,时间较急.想用webservice来做.
加载更多回复(8)
精通ASP.NET4.0网络编程基础、框架与项目实战附光》从实战出发全面、系统地了微软新发布的asp.net4.0网络开发基础、相关开发框架及应用。书中提供了大量实例并提供了1个通用模块和3个源自一线的项目开发案例供读者实战演练。《精通ASP.NET4.0网络编程基础、框架与项目实战附光》附带1张光内容为书中涉及的源代码和配套的教学视频另外还赠送了c#…… 图书目录 第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1ASP.NET事件模型和页面生命周期1.1.1经典的Web事件处理方法1.1.2ASP.NET服务器控件事件模型1.1.3ASP.NET页面生命周期1.2母版页1.2.1母版页的概念和作用1.2.2创建和使用母版页1.2.3将现有页面转换为母版页或内容页1.2.4嵌套母版页1.2.5从内容页访问母版页控件1.3主题1.3.1创建和使用主题1.3.2主题与样式表1.3.3动态修改主题1.4Web服务1.4.1Web服务简介1.4.2创建Web服务1.4.3访问Web服务1.4.4WebService实例——生活小助手1.5用户控件1.5.1创建和使用用户控件1.5.2添加自定义属性1.5.3添加自定义事件1.6自定义控件1.6.1自定义控件概述1.6.2创建和使用简单的自定义控件1.6.3添加属性1.6.4状态保持概述1.6.5视图状态ViewState1.6.6控件状态ControlState1.6.7回发数据和事件1.7小结第2章ADO.NET数据库访问技术(教学视频49分钟)2.1AD……
精通ASP.NET4.0网络编程基础、框架与项目实战附光》从实战出发全面、系统地了微软新发布的asp.net4.0网络开发基础、相关开发框架及应用。书中提供了大量实例并提供了1个通用模块和3个源自一线的项目开发案例供读者实战演练。《精通ASP.NET4.0网络编程基础、框架与项目实战附光》附带1张光内容为书中涉及的源代码和配套的教学视频另外还赠送了c#…… 图书目录 第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1ASP.NET事件模型和页面生命周期1.1.1经典的Web事件处理方法1.1.2ASP.NET服务器控件事件模型1.1.3ASP.NET页面生命周期1.2母版页1.2.1母版页的概念和作用1.2.2创建和使用母版页1.2.3将现有页面转换为母版页或内容页1.2.4嵌套母版页1.2.5从内容页访问母版页控件1.3主题1.3.1创建和使用主题1.3.2主题与样式表1.3.3动态修改主题1.4Web服务1.4.1Web服务简介1.4.2创建Web服务1.4.3访问Web服务1.4.4WebService实例——生活小助手1.5用户控件1.5.1创建和使用用户控件1.5.2添加自定义属性1.5.3添加自定义事件1.6自定义控件1.6.1自定义控件概述1.6.2创建和使用简单的自定义控件1.6.3添加属性1.6.4状态保持概述1.6.5视图状态ViewState1.6.6控件状态ControlState1.6.7回发数据和事件1.7小结第2章ADO.NET数据库访问技术(教学视频49分钟)2.1AD……
第21章 打印与报表技术 579 21.1 报表设计技术 580 0994 如何快速创建水晶报表 580 0995 如何编写带图片的报表 582 0996 如何使图片成为整个报表的背景 583 0997 如何设置水晶报表中节的背景图片 583 0998 如何设置水晶报表中节的背景色 584 0999 如何设置水晶报表的页面 584 1000 如何在报表中添加节 584 1001 如何在报表中移动节的顺序 585 1002 如何在报表中合并节 585 1003 如何在报表中册除节 585 1004 如何在报表中显示与隐藏节 586 1005 如何设置多列样式报表 586 1006 如何设置报表中节的高度 587 1007 如何设置报表的摘要信息 587 1008 如何设置报表的打印日期与时间 587 21.2 报表格式化类对象技巧 588 1009 如何在报表中使用文本对象 588 1010 如何移动对象操作 588 1011 如何对齐多个对象 589 1012 如何使用公式字段 589 1013 如何在报表中使用线 590 1014 如何在报表中使用方框 590 21.3 报表数据排序与分组技巧 591 1015 如何排序报表数据 591 1016 如何报表数据分组 591 1017 如何报表中筛选数据 592 1018 如何对分组报表中的页码进行设置 592 21.4 报表的应用技巧 593 1019 如何在水晶报表中使用交叉表 593 1020 如何在水晶报表中使用子报表 594 1021 如何动态显示子报表 596 1022 如何删除子报表 597 1023 如何在报表中计算百分比 597 21.5 Windows打印控件应用技巧 599 1024 如何使用PrintDocument控件打印窗体数据 599 1025 如何使用PrintPreviewContronl控件预览 599 1026 使用PrintPreviewDialog对话框 600 1027 如何使用PrintDialog对话框打印 601 1028 如何使用PageSetupDialog对话框设置页面 601 1029 如何使用PrintDocument控件打印文本文件 602 第22章 C#高级应用开发 605 22.1 线程的使用 606 1030 如何开始一个线程 606 1031 如何结束一个线程 606 1032 如何使线程休眠 606 1033 如何挂起一个线程 606 1034 如何判断线程的状态 606 1035 如何实现线程的同步 607 1036 如何避免死锁 607 22.2 .NET 2.0的新特性 607 1037 如何使用泛型 607 1038 如何使用匿名方法 608 1039 如何使用迭代器 609 1040 如何使用分部类 610 22.3 C#WebService 610 1041 建立SQL Server返回数据集WebService 610 1042 利用WebService传送图片 611 22.4 文件监视 611 1043 如何监视文件的创建 611 1044 如何监视文件的改变 612 1045 如何监视文件的重命名 612 1046 如何监视文件的删除 613 22.5 C#高级应用 613 1047 如何将聊天程序做成Windows服务 613 1048 COM+服务解决同时访问大量数据并发性 615 1049 COM+服务实现银行转账系统 617 1050 如何用Remoting技术传送文件 619 1051 大规模数据访问时缓解服务器压力 620 第23章 硬件及相关开发技术 623 23.1 语音卡、IC卡、神龙卡的使用 624 1052 利用语音卡拨打电话 624 1053 客户来电查询系统 625 1054 向IC卡中写入数据 626 1055 从IC卡中读取数据 627 1056 利用IC卡制作考勤程序 628 1057 利用神龙卡制作练歌房点歌程序 629 23.2 串口技术与加密狗技术 631 1058 使用串口传输数据 631 1059 通过串口控制对方计算机 631 1060 密码写入与读出加密狗 633 1061 利用加密狗制作登录程序 634 1062 利用条形码销售商品 635 23.3 其他 636 1063 简易摄像头程序 636 1064 超市摄像头定时监控系统 638 1065 利用短信猫收发短信息 639 1066 利用短信远程关闭计算机 641 1067 短信息采集烟草销售数据 643 第24章 网络开发相关技术 645 24.1 Windows服务控制 646 1068 如何暂停IIS的默认网站 646 1069 如何继续IIS的默认网站 646 1070 如何启

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧