C#从服务器下载文件可以使用下面4个方法:TransmitFile、WriteFile、WriteFile和流方式下载文件,并保存为相应类型,方法如下:
1、TransmitFile实现下载
{
/
微软为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实现下载
{
/
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、流方式下载
{
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
\\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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)