用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=" + >    }

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=" + >被管理员允许下载的文件,才可以下载,就是放在网站目录下,让浏览者去下载。因为有了权限。如果是管理员放在服务器上的文件,该文件夹没在网站目录里,或者没有权限,你想偷偷的下载下来,你就得入侵服务器了。

题主你好,

从服务器上下载文件或向服务器上传文件最常用的命令当属scp了,使用方法也简单

一先说题主问题中的情况,即从服务器上往回拿文件(官话一点的表达:从服务器上将文件下载到本地):

scp 服务器用户名@服务器ip:文件的绝对路径 要将文件保存到本地哪

举例来说,我的服务器地址是1111,用户名为hellofriend,并且在服务器上的/home/hellofriend/下有个名为ok的文件,则我想将服务器上的这个ok文件下载到本地的根目录,/,下用到的命令为:

scp hellofriend@1111:/home/hellofriend/ok /

命令执行完成后,会提示你输入hellofriend这个用户的密码,密码输入完成后,回车,正常情况下,你在根目录下就能看到ok文件了

新手注意事项:

aip地址和文件路径中间有个冒号;

b文件路径一般用绝对路径,即从根开始找;

c不要忘了写你要将文件保存在本地的哪里;

-----

二再说如何将本地文件上传到服务器,这个不细说,命令和上面的差不多:

scp 本地的文件路径 服务器用户名@服务器ip:要保存在服务器的哪个位置

如我要将本地根目录下的ok文件上传到1111这台服务器的/home/hellofriend目录下,则命令为:

scp /ok root@1111:/home/hellofriend/

执行命令后,输入密码,回车,正常情况下文件就上传成功了

-----

写在最后: 上面命令写的其实相对死板一些,其实还有一些小技巧,题主用的多了就能了解了,这里先不过多展开

=====

希望可以帮到题主, 欢迎追问

用copy命令,
将远程主机的文件复制到自己的电脑:copy
\\ip地址\c$\文件名\c:\
当然也可以把本地文件复制到远程主机:
copy
c:\文件名\\ip地址\c$
如果是ftp主机比如5944,可以在网页上直接登陆,打开ie输入
ftp://ftp分配给你的ip地址
回车后要在对话框里输入ftp分配的用户和密码
如果登陆成功,可以把浏览器的页面框缩小后以拖拽的方式把ftp上的文件拖到本地桌面。
具体在cmd命令下的ftp命令实在太多,这里就不用说了。

在jsp/servlet中断点/多线程下载文件

<%@ page import="javaioFile" %>
<%@ page import="javaioIOException" %>
<%@ page import="javaioOutputStream" %>
<%@ page import="javaioRandomAccessFile" %>
<%!
    public void downloadFile(>Dim ftpclient As SystemNetFtpWebRequest = SystemNetFtpWebRequestCreate(New SystemUri("ftp://1831362031


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12878939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存