WebService.C# 网络盘

hanbb1982 2010-06-12 08:50:03
谁有WebService.C# 做的C/S架构的网络盘的例子,如有源码例子,请发个邮件到hamby_2010@foxmail.com.小弟感激不尽!
...全文
162 29 打赏 收藏 转发到动态 举报
写回复
用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)

110,535

社区成员

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

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

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