问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用c#怎样从服务器下载文件,并保存为相应的类型

发布网友 发布时间:2022-04-28 13:24

我来回答

2个回答

热心网友 时间:2023-10-10 06:27

C#从服务器下载文件可以使用下面4个方法:TransmitFile、WriteFile、WriteFile和流方式下载文件,并保存为相应类型,方法如下:

1、TransmitFile实现下载

protected void Button1_Click(object sender, EventArgs e)
    {
        /* 
        微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 
        下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 
        代码如下: 
        */ 
        Response.ContentType = "application/x-zip-compressed";
        Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
        string filename = Server.MapPath("DownLoad/z.zip");
        Response.TransmitFile(filename);
    }

2、WriteFile实现下载

protected void Button2_Click(object sender, EventArgs e)
    {
        /* 
        using System.IO;

        */
        string fileName = "asd.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();
    }

3、WriteFile分块下载 

protected void Button3_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

        if (fileInfo.Exists == true)
        {
            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 
            byte[] buffer = new byte[ChunkSize];

            Response.Clear();
            System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小 
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
            while (dataLengthToRead > 0 && Response.IsClientConnected)
            {
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 
                Response.OutputStream.Write(buffer, 0, lengthRead);
                Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
            Response.Close();
        }
    }

4、流方式下载

protected void Button4_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        //以字符流的形式下载文件 
        FileStream fs = new FileStream(filePath, FileMode.Open);
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);
        fs.Close();
        Response.ContentType = "application/octet-stream";
        //通知浏览器下载文件而不是打开 
        Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    }

热心网友 时间:2023-10-10 06:28

try
{
string savePath = ""//保存路劲
, downFileUrl = "";//下载文件链接地址
WebClient wcClient = new WebClient();
WebRequest webReq = WebRequest.Create(downFileUrl);
WebResponse webRes = webReq.GetResponse();
int fileLength = webRes.ContentLength;

Stream srm = webRes.GetResponseStream();
StreamReader srmReader = new StreamReader(srm);
byte[] bufferbyte = new byte[fileLength];
int allByte = (int)bufferbyte.Length;
int startByte = 0;
while (fileLength > 0)
{
//Application.DoEvents();
int downByte = srm.Read(bufferbyte, startByte, allByte);
if (downByte == 0) { break; };
startByte += downByte;
allByte -= downByte;
}

if (!File.Exists(savePath))
{
string[] dirArray = savePath.Split('\\');
string temp = string.Empty;
for (int i = 0; i < dirArray.Length - 1; i++)
{
temp += dirArray[i].Trim() + "\\";
if (!Directory.Exists(temp))
Directory.CreateDirectory(temp);
}
}
FileStream fs = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(bufferbyte, 0, bufferbyte.Length);
srm.Close();
srmReader.Close();
fs.Close();
}
catch (WebException ex)
{
throw ex;
}

用这段代码试试 我自己一直用这个代码下载的 貌似我当初测试的时候是用DOC测的

今天测试了下自己的代码 可以下DOC 我怀疑你的还是编码问题

热心网友 时间:2023-10-10 06:27

C#从服务器下载文件可以使用下面4个方法:TransmitFile、WriteFile、WriteFile和流方式下载文件,并保存为相应类型,方法如下:

1、TransmitFile实现下载

protected void Button1_Click(object sender, EventArgs e)
    {
        /* 
        微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 
        下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 
        代码如下: 
        */ 
        Response.ContentType = "application/x-zip-compressed";
        Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
        string filename = Server.MapPath("DownLoad/z.zip");
        Response.TransmitFile(filename);
    }

2、WriteFile实现下载

protected void Button2_Click(object sender, EventArgs e)
    {
        /* 
        using System.IO;

        */
        string fileName = "asd.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();
    }

3、WriteFile分块下载 

protected void Button3_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

        if (fileInfo.Exists == true)
        {
            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 
            byte[] buffer = new byte[ChunkSize];

            Response.Clear();
            System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小 
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
            while (dataLengthToRead > 0 && Response.IsClientConnected)
            {
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 
                Response.OutputStream.Write(buffer, 0, lengthRead);
                Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
            Response.Close();
        }
    }

4、流方式下载

protected void Button4_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        //以字符流的形式下载文件 
        FileStream fs = new FileStream(filePath, FileMode.Open);
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);
        fs.Close();
        Response.ContentType = "application/octet-stream";
        //通知浏览器下载文件而不是打开 
        Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    }

热心网友 时间:2023-10-10 06:28

try
{
string savePath = ""//保存路劲
, downFileUrl = "";//下载文件链接地址
WebClient wcClient = new WebClient();
WebRequest webReq = WebRequest.Create(downFileUrl);
WebResponse webRes = webReq.GetResponse();
int fileLength = webRes.ContentLength;

Stream srm = webRes.GetResponseStream();
StreamReader srmReader = new StreamReader(srm);
byte[] bufferbyte = new byte[fileLength];
int allByte = (int)bufferbyte.Length;
int startByte = 0;
while (fileLength > 0)
{
//Application.DoEvents();
int downByte = srm.Read(bufferbyte, startByte, allByte);
if (downByte == 0) { break; };
startByte += downByte;
allByte -= downByte;
}

if (!File.Exists(savePath))
{
string[] dirArray = savePath.Split('\\');
string temp = string.Empty;
for (int i = 0; i < dirArray.Length - 1; i++)
{
temp += dirArray[i].Trim() + "\\";
if (!Directory.Exists(temp))
Directory.CreateDirectory(temp);
}
}
FileStream fs = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(bufferbyte, 0, bufferbyte.Length);
srm.Close();
srmReader.Close();
fs.Close();
}
catch (WebException ex)
{
throw ex;
}

用这段代码试试 我自己一直用这个代码下载的 貌似我当初测试的时候是用DOC测的

今天测试了下自己的代码 可以下DOC 我怀疑你的还是编码问题

热心网友 时间:2023-10-10 06:27

C#从服务器下载文件可以使用下面4个方法:TransmitFile、WriteFile、WriteFile和流方式下载文件,并保存为相应类型,方法如下:

1、TransmitFile实现下载

protected void Button1_Click(object sender, EventArgs e)
    {
        /* 
        微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 
        下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。 
        代码如下: 
        */ 
        Response.ContentType = "application/x-zip-compressed";
        Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
        string filename = Server.MapPath("DownLoad/z.zip");
        Response.TransmitFile(filename);
    }

2、WriteFile实现下载

protected void Button2_Click(object sender, EventArgs e)
    {
        /* 
        using System.IO;

        */
        string fileName = "asd.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        FileInfo fileInfo = new FileInfo(filePath);
        Response.Clear();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
        Response.AddHeader("Content-Length", fileInfo.Length.ToString());
        Response.AddHeader("Content-Transfer-Encoding", "binary");
        Response.ContentType = "application/octet-stream";
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
        Response.WriteFile(fileInfo.FullName);
        Response.Flush();
        Response.End();
    }

3、WriteFile分块下载 

protected void Button3_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

        if (fileInfo.Exists == true)
        {
            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 
            byte[] buffer = new byte[ChunkSize];

            Response.Clear();
            System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
            long dataLengthToRead = iStream.Length;//获取下载的文件总大小 
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
            while (dataLengthToRead > 0 && Response.IsClientConnected)
            {
                int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 
                Response.OutputStream.Write(buffer, 0, lengthRead);
                Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
            Response.Close();
        }
    }

4、流方式下载

protected void Button4_Click(object sender, EventArgs e)
    {
        string fileName = "aaa.txt";//客户端保存的文件名 
        string filePath = Server.MapPath("DownLoad/aaa.txt");//路径

        //以字符流的形式下载文件 
        FileStream fs = new FileStream(filePath, FileMode.Open);
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);
        fs.Close();
        Response.ContentType = "application/octet-stream";
        //通知浏览器下载文件而不是打开 
        Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    }

热心网友 时间:2023-10-10 06:28

try
{
string savePath = ""//保存路劲
, downFileUrl = "";//下载文件链接地址
WebClient wcClient = new WebClient();
WebRequest webReq = WebRequest.Create(downFileUrl);
WebResponse webRes = webReq.GetResponse();
int fileLength = webRes.ContentLength;

Stream srm = webRes.GetResponseStream();
StreamReader srmReader = new StreamReader(srm);
byte[] bufferbyte = new byte[fileLength];
int allByte = (int)bufferbyte.Length;
int startByte = 0;
while (fileLength > 0)
{
//Application.DoEvents();
int downByte = srm.Read(bufferbyte, startByte, allByte);
if (downByte == 0) { break; };
startByte += downByte;
allByte -= downByte;
}

if (!File.Exists(savePath))
{
string[] dirArray = savePath.Split('\\');
string temp = string.Empty;
for (int i = 0; i < dirArray.Length - 1; i++)
{
temp += dirArray[i].Trim() + "\\";
if (!Directory.Exists(temp))
Directory.CreateDirectory(temp);
}
}
FileStream fs = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(bufferbyte, 0, bufferbyte.Length);
srm.Close();
srmReader.Close();
fs.Close();
}
catch (WebException ex)
{
throw ex;
}

用这段代码试试 我自己一直用这个代码下载的 貌似我当初测试的时候是用DOC测的

今天测试了下自己的代码 可以下DOC 我怀疑你的还是编码问题
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女方早婚早育要离婚未满月孩子该怎么才能判给 家庭暴力,孩子未满月,孩子母亲要求离婚 孩子未满月是否可以离婚 孩子未满月可不可以离婚 新生儿未满月是否可离婚 固原斜视眼有哪些表现? 如何看待儿童斜视问题?固原 固原斜视儿童有必要做手术吗 HOJOJODO皇家金盾S1智能电子锁-详细介绍 皇家金盾智能锁怎么改密码 如何用.NET 3.5实现客户端申请从服务器端下载一个文件? 在一个局域网内,有一个服务器若干客户端,怎样可以完成客户端从服务器下下载文件。除了FTP协议方法以外 客户端是如何上传数据到FTP服务器和从FTP服务器下载文件的? Web中文本和字体有什么区别吗? CSS里一直在提文本属性和字体属性,我实在不明白他们之间的区别? 《阳光姐姐作文派.蓝色风铃的絮语》读后感怎样写300字。 女朋友要我送风铃给她,我要买什么颜色的?风铃代表什么? 如何选择风铃? 我的作文题目是“一串蓝色的风铃”,为什么老师给我打波浪线,你们觉得这个题目写的好吗 蓝色风铃草的花语 风铃代表的意思?? 送男性朋友蓝色的风铃做生日礼物好吗? 蓝风铃和希尔顿哪个好闻 摩尔庄园哪个蓝色的风铃是什么?在哪能得到?现在还有没有? 女生送我一个蓝色的心形风铃 是什么意思 她还说 放在你起床能看到的地方?到底是什么意思? 蓝色风铃有什么意义么? 蓝风铃和绿色风铃味道一样吗 蓝色风铃代表什么 蓝色风铃的寓意是什么? 苹果7 plus手机为什么发不了动画短信? 如何在短信中发送动画 设备作为FTP客户端时,如何从服务器下载VRP? 怎样有效增强记忆力 怎么样才可以有效的快速提高记忆力? java 如何在使用java类 从客户端下载服务器上的文件 C#mvc怎么从服务器上下载文件到客户端 记忆力提高的方法 提高记忆力有什么小妙招? java下载服务器上的文件到客户端 提高记忆力有什么小妙招? 绝对高分求客户端向服务器上传与下载文件的程序 从服务器端下载文件到客户端,可是文件始终保存在服务器端的磁盘上,求解释qq聊:1045268468 怎么才能加强记忆力? 一个16级以上QQ最多能建多少个群? asp.net 客户端如何读取服务器端的文件,要求是先从服务器下载到本地的临时文件,在用本地的应用程序打开。 QQ等级到太阳了可以建几个群 增强记忆力最快的方法? QQ16级能建几个群? 用户如何从服务器下载文件 qq16级到底可以建几个群? 求解:服务器端与客户端下载的文件大小不一致。 QQ16级可以建几个群? 怎么样可以增强记忆力