ftp下载 包501错误,说参数有错或无效上代码 public static bool DisplayFileFromServer(Uri serverUri,string pwd)
{
// The serverUri parameter should start with the ftp:// scheme.
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
return false;
}
WebClient request = new WebClient();
//连接
request.Credentials = new NetworkCredential("forumDB", pwd);
try
{
byte[] newFileData = request.DownloadData(serverUri.ToString());
string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
Console.WriteLine(fileString);
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
}
return true;
}
static void Main(string[] args)
{
// Download(@"c:/","a.txt");
DisplayFileFromServer(new Uri("ftp://117.79.93.200//13_2_db120617.rar"),"ddddd");
}1.我确定 这个跟目录下确实有这个文件
2.用dos和游览器地址都能访问并下载,是我哪写错了?也希望别人能提供ftp下载代码.
{
// The serverUri parameter should start with the ftp:// scheme.
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
return false;
}
WebClient request = new WebClient();
//连接
request.Credentials = new NetworkCredential("forumDB", pwd);
try
{
byte[] newFileData = request.DownloadData(serverUri.ToString());
string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
Console.WriteLine(fileString);
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
}
return true;
}
static void Main(string[] args)
{
// Download(@"c:/","a.txt");
DisplayFileFromServer(new Uri("ftp://117.79.93.200//13_2_db120617.rar"),"ddddd");
}1.我确定 这个跟目录下确实有这个文件
2.用dos和游览器地址都能访问并下载,是我哪写错了?也希望别人能提供ftp下载代码.
解决方案 »
- c#写的窗口程序,运行几天都是正常的,但有时会弹出窗口提示System.IndexOutOfRangeException: Index was outside
- c# 如何调用mysqldump
- 软件上方的工具栏如何实现自由拖动?
- ASP中的母版页加载事件怎么会执行两次?
- 关于Lock语句的简单问题:
- 当前上下文中不存在"NextPic"
- 求-----split的用法。
- 实现多个头像闪动
- 【欢迎讨论】【使用GDI+如何在椭圆中画文字?要求文字不超出椭圆的范围,且文字与椭圆自适应】
- itextsharp.dll 5.4版本怎么没用 SetCrypto 怎么给PDF文件添加数字签名
- 提高数据库的数据处理速度
- 一个关于MVC2.0设置二级域名路由的问题
public static bool DisplayFileFromServer(Uri serverUri, string pwd)
{
// The serverUri parameter should start with the ftp:// scheme.
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
return false;
} try
{
var request = (FtpWebRequest)WebRequest.Create(serverUri);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential("forumDB", pwd);
request.UseBinary = true;
request.KeepAlive = false;
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
using (var ms = new MemoryStream())
{
var buf = new byte[10240];
int len = 0;
while ((len = stream.Read(buf, 0, buf.Length)) > 0)
{
ms.Write(buf, 0, len);
}
byte[] newFileData = ms.ToArray();
string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
Console.WriteLine(fileString);
}
}
catch (WebException e)
{
Console.WriteLine(e.ToString());
}
return true;
}不过看样子下载下来的是个 rar 文件,GetString 会是乱码
internal static bool FtpDownloadFile(FtpSite ftpSite, Uri url)
{
if(url == null || url.Scheme == null)
{
throw new ArgumentNullException("URL");
}
if (FtpSite == null)
{
throw new ArgumentNullException("FtpSite");
}
if (!Uri.UriSchemeFtp.Equals(url.Scheme, StringComparer.CurrentCultureIgnoreCase))
{
throw new NotSupportedException("Only for FTP download!");
}
//根据URI创建FtpWebRequest对象
FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(url);
//ftp用户名和密码
ftpRequest.Credentials = new NetworkCredential(ftpSite.UserName, ftpSite.Password);
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; //指定操作类别
ftpRequest.UseBinary = true; //指定数据传输类型
ftpRequest.KeepAlive = false; //下载完后不用保持连接
return SaveAsFile(ftpRequest, upgradeReport.SaveFileName);
}static void SaveAsFile(WebRequest request, string saveName)
{
WebResponse response = null;
request.Proxy = null;
request.Timeout = 60000; //设置请求超时时间
//request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
response = (WebResponse)request.GetResponse();
using (var responseStream = response.GetResponseStream())
{
using (var fs = new FileStream(saveName, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
{
int bufferLength = 2048, offset = 0;
byte[] buffer = new byte[bufferLength];
while ((offset = responseStream.Read(buffer, 0, bufferLength)) > 0)
fs.Write(buffer, 0, offset);
}
}
}
=>
SaveAsFile(ftpRequest, upgradeReport.SaveFileName);
static bool SaveAsFile(WebRequest request, string saveName)
{
WebResponse response = null;
request.Proxy = null;
request.Timeout = 60000; //设置请求超时时间
//request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore);
try
{
response = (WebResponse)request.GetResponse();
using (var responseStream = response.GetResponseStream())
{
using (var fs = new FileStream(saveName, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
{
int bufferLength = 2048, offset = 0;
byte[] buffer = new byte[bufferLength];
while ((offset = responseStream.Read(buffer, 0, bufferLength)) > 0)
{
fs.Write(buffer, 0, offset);
}
fs.Close();
}
}
return true;
}
catch
{
return false;
}