为什么我在尝试从我的 ftp 服务器获取文件大小时出现异常

本文关键字:文件 获取 小时 异常 服务器 ftp 我的 为什么 | 更新日期: 2023-09-27 18:33:21

我需要获取文件大小,以便以后可以计算并向进度栏报告到目前为止已下载的下载量以及还有多少需要下载的下载量。

在form1中,我有一个后台工作者,这就是我使用下载方法将文件发送到类的方式:

private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i < numberOfFiles.Count; i++)
            {
                int fn = numberOfFiles[i].IndexOf(txtHost.Text, 0);
                string fn1 = numberOfFiles[i].Substring(txtHost.Text.Length + 1, numberOfFiles[i].Length - (txtHost.Text.Length + 1));
                string dirs = Path.GetDirectoryName(fn1);
                string filename = Path.GetFileName(fn1);
                ftpProgress1.DownloadFtpContent(sender,numberOfFiles[i], dirs, filename);
            }
        }

然后在方法中 下载FtpContent 我做到了:

public void DownloadFtpContent(object sender ,string file, string filesdirectories,string fn)
        {                       
            try
            {
                BackgroundWorker bw = sender as BackgroundWorker;
                string filenameonly = Path.GetFileName(file);
                string ftpdirectories = Path.Combine(ftpcontentdir, filesdirectories);
                string fileurl = "ftp://" + file;
                FtpWebRequest reqFTP;                
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(fileurl);                                
                reqFTP.Credentials = new NetworkCredential(UserName, Password);
                reqFTP.UseBinary = true;
                reqFTP.UsePassive = true;
                reqFTP.KeepAlive = true;
                reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
                FtpWebResponse resp = (FtpWebResponse)reqFTP.GetResponse();
                Int64 FileContLen = resp.ContentLength;

我在文件网址中看到目录和文件名,例如:

ftp://ftp.newsxpressmedia.com/Images/CB 967x330.jpg

但是在行上使用断点:

FtpWebResponse resp = (FtpWebResponse)reqFTP.GetResponse();

我收到异常:

网页异常:

远程服务器返回错误:(550( 文件不可用(例如,找不到文件,无法访问

为什么我在尝试从我的 ftp 服务器获取文件大小时出现异常

首先,您必须检查该文件在FTP服务器上是否存在。 如果文件为"存在",则检查"文件访问"的权限。 如果您没有"文件"的访问权限,则无法获取文件大小。