C#操作FTP报错,无论上传、下载、创建、删除,都是一个错误【远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)】
C#操作FTP全部都是报这一个错误,无论上传、下载、创建目录、删除文件等,用户有做这些操作的权限,路径正确,我把路径放在IE中是可用的,请大神们帮忙看看。感激不尽。FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://10.112.9.74/etldata/OAS/PREPARE/20130109/a.txt"));
ftp.Credentials = new NetworkCredential("ftpuser", "ftpuser");
ftp.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse res = ftp.GetResponse() as FtpWebResponse; //无论上传、下载、创建、删除都是此处报错,错误:远程服务器返回错误:(550) 文件不可用(例如,未找到文件,无法访问文件)
Stream responseStream = res.GetResponseStream();
FPT C# WebRequest --------------------编程问答-------------------- 看您写的代码,FtpWebRequest中传的URI是对应的txt文件,您确定没写错吗? --------------------编程问答-------------------- 那代码是下载的,如果是其他的操作URL我会改成相应的 --------------------编程问答-------------------- 路径的大小写没错吗? --------------------编程问答-------------------- 路径大小写没有问题 --------------------编程问答--------------------
//上传代码--------------------编程问答--------------------
string filename = Path.GetFileName(source);//获取文件名
string ftpfullpath = "ftp://192.168.58.234:21/";
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath + filename);
ftp.Credentials = new NetworkCredential("user", "password");
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(source);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
flag = true;
ftpstream.Close();
/// <summary>--------------------编程问答-------------------- 1.是不是本地文件夹的权限不够
/// Ftp断点续传 下载
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="Directory">本地路径</param>
/// <returns></returns>
public bool DownloadFileToFTP(string filename, string Directory)
{
bool flag = false; ;
Uri u = new Uri(ftpurl + filename);
string downFile = Directory + filename;
//FtpWebRequest的作成
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create(u);
//设定用户名和密码
ftpReq.Credentials = new NetworkCredential(ftpusername, ftppassword);
//Method WebRequestMethods.Ftp.DownloadFile("RETR")设定
ftpReq.Method = WebRequestMethods.Ftp.DownloadFile;
//要求终了后关闭连接
ftpReq.KeepAlive = false;
//使用ASCII方式传送
ftpReq.UseBinary = false;
//设定PASSIVE方式无效
ftpReq.UsePassive = false;
//判断是否继续下载
//继续写入下载文件的FileStream
FileStream fs;
try
{
if (File.Exists(downFile))
{
//继续下载
ftpReq.ContentOffset = (new FileInfo(downFile)).Length;
fs = new FileStream(
downFile, FileMode.Append, FileAccess.Write);
}
else
{
//一般下载
fs = new FileStream(
downFile, FileMode.Create, FileAccess.Write);
}
//取得FtpWebResponse
FtpWebResponse ftpRes = (FtpWebResponse)ftpReq.GetResponse();
//为了下载文件取得Stream
Stream resStrm = ftpRes.GetResponseStream();
//写入下载的数据
byte[] buffer = new byte[1024];
while (true)
{
int readSize = resStrm.Read(buffer, 0, buffer.Length);
if (readSize == 0)
break;
fs.Write(buffer, 0, readSize);
}
fs.Close();
resStrm.Close();
//表示从FTP服务器被送信的状态
Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription);
//关闭连接
ftpRes.Close();
flag = true;
}
catch (Exception)
{
throw;
}
return flag;
}
在文件夹属性中的安全选项中,把Everyone用户给所有权限
2.地址可能有错误,看看目录存不存在, 是不是你的帐户虽然有上传文件的权限,但是没有建立目录的权限?
查看抛出的异常具体信息 --------------------编程问答-------------------- 550 Requested action not taken. File unavailable (e.g., file not found, no access).
请求操作未被执行,文件不可用。
是不是上传的文件有问题哦? --------------------编程问答-------------------- 用户的权限是没有问题的,可用建立目录之类的操作 --------------------编程问答--------------------
这个还是会报一样才错误 --------------------编程问答-------------------- 原因我已经找到了,是因为ftp的默认目录引发的,如,ftp的默认目录是文件夹中A\B,创建ftp连接时默认连接到这个目录来了,而B文件夹下没有etldata目录,所以报错了,而etldata目录是与A目录平级的,请问怎么返回到A目录呢或者是etldata目录呢,求帮助 --------------------编程问答--------------------
做不到。
ftp不支持你在客户端文件路径里弄个..之类的东西的。 --------------------编程问答-------------------- 楼主解决问题没啊?
我也遇到这个问题了 --------------------编程问答-------------------- 我去 我也遇到这个问题了 --------------------编程问答-------------------- 上面的大哥们,我也遇到了这个问题。。。。都不知道怎么回事了,我别人的电脑上都没有问题,,今天刚刚发布到服务器上面就有问题了。。。难不成和服务器有关系呀。
补充:.NET技术 , C#