当前位置: 首页 > 知识库问答 >
问题:

FtpWebRequest返回错误550文件不可用

宋飞文
2023-03-14

我创建了一个小的windows窗体应用程序,将文件上载到我们客户的ftp站点之一。但我遇到的问题是,当我在本地机器上运行这个应用程序时,它会成功上传文件。但是如果我在我们的服务器上运行这个程序,我会收到这个错误消息;

远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问文件),在此行“objFTPRequest.GetRequestStream();”。

有人知道为什么吗?我需要配置防火墙吗?这是我的代码

FileInfo objFile = new FileInfo(filename);
FtpWebRequest objFTPRequest;

// Create FtpWebRequest object 
objFTPRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/outbox/" + objFile.Name));

// Set Credintials
objFTPRequest.Credentials = new NetworkCredential(ftpUserName, ftpPassword);

// By default KeepAlive is true, where the control connection is 
// not closed after a command is executed.
objFTPRequest.KeepAlive = false;

// Set the data transfer type.
objFTPRequest.UseBinary = true;

// Set content length
objFTPRequest.ContentLength = objFile.Length;

// Set request method
objFTPRequest.Method = WebRequestMethods.Ftp.UploadFile;

// Set buffer size
int intBufferLength = 16 * 1024;
byte[] objBuffer = new byte[intBufferLength];

// Opens a file to read
FileStream objFileStream = objFile.OpenRead();


// Get Stream of the file
Stream objStream = objFTPRequest.GetRequestStream();

int len = 0;

while ((len = objFileStream.Read(objBuffer, 0, intBufferLength)) != 0)
{
    // Write file Content 
    objStream.Write(objBuffer, 0, len);

}

            objStream.Close();
            objFileStream.Close();

共有3个答案

边浩波
2023-03-14

我遇到了同样的问题,这就是我所做的:

  1. 检查操作系统是否有权写入。找到ftp文件夹=
高展
2023-03-14

试试这个:ftp://xxx.xxx.xx.xx:21//path/filename

服务器地址后的“/”将您启动到根目录。尽管我有:ftp://xxx.xxx.xx.xx:21/path/filename,它没有把我带到正确的目录。

柴翰藻
2023-03-14

此错误可能是由以下几个原因引起的:html" target="_blank">服务器上不存在文件、文件的安全权限等。

首先,您需要找出错误的确切原因。这可以通过使用以下代码来实现-

try
{
        //Your code
}
catch(WebException e)
{
        String status = ((FtpWebResponse)e.Response).StatusDescription;
}

一旦你得到错误的确切原因,你就可以继续解决它。

这里有一些链接你可以参考

http://forums.asp.net/t/1777881.aspx/1

http://nickstips.wordpress.com/2010/10/25/c-ftp-upload-error-the-remote-server-returned-an-error-550-file-unavailable-e-g-file-not-found-no-access/

http://www.dreamincode.net/forums/topic/76361-file-upload-to-server/

http://forums.asp.net/t/1374306.aspx/1

 类似资料:
  • 我有一个恼人的问题,阻止我在FTP中获取所需的文件。这个文件可能有不同的名称,所以我需要先访问文件夹,并列出其中的文件,然后直接请求该文件。 我的问题是,我可以访问这个文件在Filezilla中,例如,并完美地发现文件夹,但当使用实例来获取文件夹,我有一个错误550 550文件不可用(例如,找不到文件,无法访问) 代码如下: FtpWebResponse响应=(FtpWebResponse)wr。

  • 我是JS的学生。我有一段代码返回了一个错误。 这是返回的语法错误。你们能解释一下我做错了什么吗?

  • 问题内容: 当我尝试在http://golang.org/pkg/net/http/#example_Get上运行此示例时,它返回以下错误 2009/11/10 23:00:00获取http://www.google.com/robots.txt:拨打tcp:协议不可用 知道为什么吗? 问题答案: Go Playground不允许HTTP请求。这与代码无关。这是操场强制执行的安全预防措施。

  • 基类控制器里有error方法,用于api的错误消息返回输出 /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息'] * @param mixed $data 返回的数据 * @par

  • 在我的MySQL数据库中,我有一个表"table1",在列"name"上设置了唯一约束-我想防止重复的名称。 如果表中已经有名字'John',则此代码: 应该抛出insertUnonnequeException()(我自己的异常)。相反,它抛出InsertException()。 查询的执行返回false,执行进入if()循环。另外$db- 我不知道为什么当发生唯一密钥约束冲突时,mysqli不返

  • 我注意到,如果没有where(),returning()操作不可用。这是故意的吗? 这项工作: 这不起作用: 我应该考虑这个“黑客”吗?