C#中如何Download数据?分不够可以加

JavaHobby1216 2005-08-11 11:31:19
C#中如何Download数据?最好有源码。去msdn看了,没找到啊。
...全文
260 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyb_abiandbel 2005-08-16
  • 打赏
  • 举报
回复
c#:
public bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed)
{
try {
FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
BinaryReader br = new BinaryReader(myFile);
try {
_Response.AddHeader("Accept-Ranges", "bytes");
_Response.Buffer = false;
long fileLength = myFile.Length;
long startBytes = 0;
Int16 pack = 10240;
Int16 sleep = Convert.ToInt16(Math.Floor(1000 * pack / _speed) + 1);
if (!(_Request.Headers("Range") == null)) {
_Response.StatusCode = 206;
char[] splitChar = new char[1];
splitChar(0) = "=";
splitChar(1) = "-";
string[][0] range = _Request.Headers("Range").Split("a");
startBytes = Convert.ToInt64(range(1));
}
_Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());
if ((startBytes != 0)) {
_Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));
}
_Response.AddHeader("Connection", "Keep-Alive");
_Response.ContentType = "application/octet-stream";
_Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8));
br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
long maxCount = Convert.ToInt64(Math.Floor((fileLength - startBytes) / pack) + 1);
long i;
for (int i = 0; i <= maxCount; i++) {
if ((_Response.IsClientConnected)) {
_Response.BinaryWrite(br.ReadBytes(pack));
Thread.Sleep(sleep);
} else {
i = maxCount;
}
}
} catch (Exception e) {
return false;
} finally {
br.Close();
myFile.Close();
}
} catch {
return false;
}
}
sniper81 2005-08-15
  • 打赏
  • 举报
回复
你是在做CS程序还是BS程序啊?
2种结构的做法是不同的
LGame 2005-08-12
  • 打赏
  • 举报
回复
要不给下载时给个提示框出来~~
smile65 2005-08-12
  • 打赏
  • 举报
回复
这个是弹出一个保存对话框的代码
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel(*.xls)|*.xls";
saveFileDialog.Title = "保存";
if( saveFileDialog.ShowDialog() != DialogResult.OK )
{
return 0;
}
saveFileDialog.FileName = 你选中的文件的名称(路径加文件名),upload也很简单,就把上面哥们那个download反过来写就好了
holym 2005-08-12
  • 打赏
  • 举报
回复
帮顶
JavaHobby1216 2005-08-12
  • 打赏
  • 举报
回复
UP!!!
Hero4444 2005-08-12
  • 打赏
  • 举报
回复
up
JavaHobby1216 2005-08-12
  • 打赏
  • 举报
回复
多谢smile65(防弹马甲),用了你说的方法,结果出现如下错误:

在应用程序未以 UserInteractive 模式运行时显示模式对话框或窗体是无效的操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidOperationException: 在应用程序未以 UserInteractive 模式运行时显示模式对话框或窗体是无效的操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。

是不是还要设置什么东西啊???
JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
多谢,不过能具体点吗?我接触C#没多久
TechEye 2005-08-11
  • 打赏
  • 举报
回复
只是下载文件是吗?简单的用
WebClient
当然,你也要以用socks
JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
up!
JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
加30分。。。先!
JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
还要非常感谢sniper81(零度的火),不过我把你的程序拷过来,运行时确实能down下来文件,不过页面就像死掉了一样;多谢各位的帮忙,还是需要弹出对话框那段程序,不知道有没有阿? ycpang422(胖胖) 的upload问题,希望大家也能帮忙解决阿,这个帖子如果弄好了,真的值得收藏啊,呵呵!分数是一定会加的!!!
ycpang422 2005-08-11
  • 打赏
  • 举报
回复
还有上传文件怎么写啊
System.Net.WebClient myClient = new System.Net.WebClient();
myClient.UploadFile("http://localhost/upload/",filename);
错误在什么地方?
第二个参数应该用"POST"还是什么?
claus2001 2005-08-11
  • 打赏
  • 举报
回复
mark
JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
多谢 syspring(和风细雨) ,我把fileName改成Server.MapPath(fileName);不出异常了,不过怎么弹出保存路径的对话框啊?
sniper81 2005-08-11
  • 打赏
  • 举报
回复
using System;
using System.Net;

namespace ConsoleTest
{
/// <summary>
/// WebDownload 的摘要说明。
/// </summary>
public class WebDownload
{
public WebDownload()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

[STAThread]
static void Main(string[] args)
{
//下载的文件地址
string strURL = "http://localhost/SmartClientDemo_Service/SmartClientDemo_V1.0.0.0/notepad.exe";
HttpWebRequest request = HttpWebRequest.Create(strURL) as HttpWebRequest;
WebResponse response = request.GetResponse();
//保存的文件名称
string strFileName = @"c:\note.exe";
byte[] buffer=new byte[512];
System.IO.FileStream fs = System.IO.File.Create(strFileName);
System.IO.Stream stream = response.GetResponseStream();
int bytesRead=0,bytesCurRead=-1;
while (bytesCurRead != 0)
{
bytesCurRead=stream.Read(buffer,0,512);
fs.Write(buffer,0,bytesCurRead);
bytesRead += bytesCurRead;
Console.WriteLine("CurRead:" + bytesCurRead.ToString());
Console.WriteLine("TotalRead:" + bytesRead.ToString());
}
fs.Close();
stream.Close();
response.Close();
Console.WriteLine("OK");
Console.ReadLine();
}
}
}
JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
刚从msdn看到的,不过在我的机器上怎么不好用啊:
显示的路径居然是"E:\WINNT\system32\MenuInfo.xml"
完全不对阿,我的路径应该是E:\Cnet/XmlFile/MenuInfo.xml
string remoteUri = "http://localhost/Cnet/XmlFile/";
string fileName = "MenuInfo.xml", myStringWebResource = null;
myStringWebResource = remoteUri + fileName;
client.DownloadFile(myStringWebResource,fileName);
syspring 2005-08-11
  • 打赏
  • 举报
回复
System.Net.WebClient wc=new System.Net.WebClient();
wc.DownloadFile("http://www.xyz.com/abc.xml,Server.MapPath("abc.xml"));

这是个webform的

JavaHobby1216 2005-08-11
  • 打赏
  • 举报
回复
就是想从server端download到本地,弹出一个对话框窗口那种,很常见的download.
加载更多回复(5)

110,534

社区成员

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

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

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