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

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

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

1、TransmitFile实现下载

protected void Button1_Click(object sender, EventArgs e)

    {

        / 

        微软为Response对象提供了一个新的方法TransmitFile来解决使用ResponseBinaryWrite 

        下载超过400mb的文件时导致Aspnet_wpexe进程回收而无法成功下载的问题。 

        代码如下: 

        / 

        ResponseContentType = "application/x-zip-compressed";

        ResponseAddHeader("Content-Disposition", "attachment;filename=zzip");

        string filename = ServerMapPath("DownLoad/zzip");

        ResponseTransmitFile(filename);

    }

2、WriteFile实现下载

protected void Button2_Click(object sender, EventArgs e)

    {

        / 

        using SystemIO;

        /

        string fileName = "asdtxt";//客户端保存的文件名 

        string filePath = ServerMapPath("DownLoad/aaatxt");//路径

        FileInfo fileInfo = new FileInfo(filePath);

        ResponseClear();

        ResponseClearContent();

        ResponseClearHeaders();

        ResponseAddHeader("Content-Disposition", "attachment;filename=" + fileName);

        ResponseAddHeader("Content-Length", fileInfoLengthToString());

        ResponseAddHeader("Content-Transfer-Encoding", "binary");

        ResponseContentType = "application/octet-stream";

        ResponseContentEncoding = SystemTextEncodingGetEncoding("gb2312");

        ResponseWriteFile(fileInfoFullName);

        ResponseFlush();

        ResponseEnd();

    }

3、WriteFile分块下载 

protected void Button3_Click(object sender, EventArgs e)

    {

        string fileName = "aaatxt";//客户端保存的文件名 

        string filePath = ServerMapPath("DownLoad/aaatxt");//路径

        SystemIOFileInfo fileInfo = new SystemIOFileInfo(filePath);

        if (fileInfoExists == true)

        {

            const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 

            byte[] buffer = new byte[ChunkSize];

            ResponseClear();

            SystemIOFileStream iStream = SystemIOFileOpenRead(filePath);

            long dataLengthToRead = iStreamLength;//获取下载的文件总大小 

            ResponseContentType = "application/octet-stream";

            ResponseAddHeader("Content-Disposition", "attachment; filename=" + HttpUtilityUrlEncode(fileName));

            while (dataLengthToRead > 0 && ResponseIsClientConnected)

            {

                int lengthRead = iStreamRead(buffer, 0, ConvertToInt32(ChunkSize));//读取的大小 

                ResponseOutputStreamWrite(buffer, 0, lengthRead);

                ResponseFlush();

                dataLengthToRead = dataLengthToRead - lengthRead;

            }

            ResponseClose();

        }

    }

4、流方式下载

protected void Button4_Click(object sender, EventArgs e)

    {

        string fileName = "aaatxt";//客户端保存的文件名 

        string filePath = ServerMapPath("DownLoad/aaatxt");//路径

        //以字符流的形式下载文件 

        FileStream fs = new FileStream(filePath, FileModeOpen);

        byte[] bytes = new byte[(int)fsLength];

        fsRead(bytes, 0, bytesLength);

        fsClose();

        ResponseContentType = "application/octet-stream";

        //通知浏览器下载文件而不是打开 

        ResponseAddHeader("Content-Disposition", "attachment; filename=" + HttpUtilityUrlEncode(fileName, SystemTextEncodingUTF8));

        ResponseBinaryWrite(bytes);

        ResponseFlush();

        ResponseEnd();

    }

其实我建议使用一个专门的ftp客户端来使用ftp比较好,这样你只需要在客户端上输入ftp服务器的IP和端口,账号,密码,就能轻松的上传和下载文件,非常实用。

这里我推荐使用IIS7服务器管理工具,它可以作为FTP的客户端,想要进行FTP的上传下载操作,只需要下载安装iis7服务器管理工具就可以了!免费下载,很方便。

同时它还可以作为VNC的客户端,进行VNC的相应操作!它能够连接Windows和Linux系统下的服务器和VPS,能满足你不同系统的使用,感觉不错的话可以试试

看你是什么服务器了~~

ftp服务器的话需要输入

ftp://xxxxxxxxxxxxxip地址,如果需要用户名密码的话输入就可以了~~

打开后,想下载哪个就下载哪个,可以直接拖动到你的计算机上的任何一个磁盘里,也可以借助一些FTP下载工具进行下载。如果是网页页面形式的话,在要下载的文件处单击鼠标右键,目标另存为即可

/

  根据文件输入流,和文件名称下载文件

  @param resp HttpServletResponse

  @param file 供下载的文件

  @param file_name 所显示的下载文件名称

 /

public void FileDownLoad(HttpServletResponse resp ,File file, String file_name) {

try {

String fileName = new String(file_namegetBytes("GBK"), "ISO8859_1");

respsetContentType("application;charset=utf-8"); // 指定文件的保存类型。

respsetHeader("Content-disposition", "attachment; filename="+ fileName);

ServletOutputStream oupstream = respgetOutputStream();

FileInputStream from = new FileInputStream(file);

byte[] buffer = new byte[catchSize];

int bytes_read;

while ((bytes_read = fromread(buffer)) != -1) {

oupstreamwrite(buffer, 0, bytes_read);

}

oupstreamflush();

} catch (Exception e) {

}

}

这个是服务器端文件下载工具类 题主可以试试,望采纳

常用的三种方法!

1:在服务器上建立一个WEB网站,然后把要下载的文件压缩一下打包,再然后放到建好的WEB网站的根目录,然后网址再加一个打包的文件名就可以在本地下载了。这就是所说的在服务器上做一个下载点

2:在服务器上安装FTP的服务端,然后在本地的FTP客户端里下载文件

3:在服务器里进邮箱把文件传到邮箱里,然后在本地打开邮箱进去下载文件

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 用c#怎样从服务器下载文件,并保存为相应的类型

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情