问题标签 [ftpwebrequest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
153088 浏览

c# - FtpWebRequest 下载文件

以下代码旨在通过 FTP 检索文件。但是,我遇到了一个错误。

错误是:

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

该文件确实存在于远程机器上,我可以手动执行这个 ftp(即我有权限)。谁能告诉我为什么我会收到这个错误?

0 投票
1 回答
1757 浏览

.net - .NET FtpWebRequest 不返回 DateTimeStamp 或 FileSize

我正在使用 FtpWebRequest 连接到 FTP 服务器,并且可以使用 WebRequestMethods.Ftp.ListDirectoryDe​​tails 列出目录详细信息。然而,来自远程服务器的响应有日期、月份和时间,但没有年份:

-rw-rw-rw- 1 用户组 949 Jun 2 08:43 Unsubscribes_20100602.zip

-rw-rw-rw- 1 用户组 1773 Jun 1 06:48 export_142571709.txt

-rw-rw-rw- 1 用户组 1773 Jun 1 06:50 export_142571722.txt

-rw-rw-rw- 1 用户组 980 Jun 1 06:51 export_142571734.txt

这是我正在编写的应用程序所必需的,因此我尝试使用 WebRequestMethods.Ftp.GetDateTimestamp 来获取每个文件的日期时间戳,但响应始终为空。不会抛出异常。

有没有人知道为什么会这样?

0 投票
2 回答
18128 浏览

c# - 当前用户目录与 root 不同时,无法使用 ftp 方法重命名文件

备注:由于垃圾邮件预防机制,我被迫将 Uris 的开头从 ftp:// 替换为 ftp。

我有以下问题。我必须使用 C# ftp 方法上传文件,然后重命名它。容易,对吧?:)

好的,假设我的 ftp 主机是这样的:

ftp.contoso.com

登录后,当前目录设置为:

用户/名称

所以,我想要实现的是登录,将文件作为 file.ext.tmp 上传到当前目录,上传成功后,将文件重命名为 file.ext

正如我猜想的那样,整个困难在于正确设置 FtpWebRequest 的请求 Uri。

MSDN 状态:

URI 可以是相对的或绝对的。如果 URI 的格式为“ ftp://contoso.com/%2fpath”(%2f是转义的“/”),则 URI 是绝对的,当前目录是 /path。但是,如果 URI 的格式为“ ftp://contoso.com/path ”,则 .NET Framework 首先登录 FTP 服务器(使用 Credentials 属性设置的用户名和密码),然后是当前目录设置为 UserLoginDirectory/路径。

好的,所以我使用以下 URI 上传文件:

ftp.contoso.com/file.ext.tmp

太好了,文件位于我想要的位置:在目录“用户/名称”中

现在,我想重命名文件,所以我使用以下 Uri 创建 Web 请求:

ftp.contoso.com/file.ext.tmp

并将参数重命名为:

文件.ext

这给了我 550 错误:找不到文件,没有权限等。

我在 Microsoft Network Monitor 中跟踪了这一点,它给了我:

命令:RNFR,从命令参数重命名
:/file.ext.tmp
Ftp:响应端口 53724,'550 文件 /file.ext.tmp 未找到'

就好像它在根目录中寻找文件 - 而不是在当前目录中。

我使用 Total Commander 手动重命名了文件,唯一的区别是 CommandParameter 没有第一个斜杠:

命令参数:file.ext.tmp

我可以通过提供以下绝对 URI 成功重命名文件:

ftp.contoso.com/%2fusers/%2fname/file.ext.tmp

但我不喜欢这种方法,因为我必须知道当前用户目录的名称。它可能可以通过使用 WebRequestMethods.Ftp.PrintWorkingDirectory 来完成,但它增加了额外的复杂性(调用此方法来检索目录名称,然后组合路径以形成正确的 URI)。

我不明白为什么 URI ftp.contoso.com/file.ext.tmp 适合上传而不适合重命名?我在这里错过了什么吗?

该项目设置为 .NET 4.0,在 Visual Studio 2010 中编码。

编辑

好的,我放置代码片段。

请注意,ftp 主机、用户名和密码应填写。要使此示例正常工作 - 即产生错误 - 用户目录必须与 root 不同(“pwd”-命令应该返回不同于“/”的内容)

0 投票
2 回答
1685 浏览

c# - C# FtpWebRequest 错误 403

我有以下代码通过 FTP 检索文件:

这在大多数情况下都有效,但我有一台客户端机器出现异常:

谁能告诉我为什么会这样?在所有客户端上运行的代码完全相同(包括相同的用户名和密码)?

0 投票
1 回答
3851 浏览

c# - FtpWebRequest 下载文件大小不正确

我正在使用以下代码从远程 ftp 服务器下载文件:

我正在下载的文件是一个 dll,我的问题是它正在以某种方式被这个过程改变。我知道这是因为文件大小在增加。我怀疑这部分代码有问题:

任何人都可以就可能出现的问题提供任何想法吗?

0 投票
1 回答
411 浏览

.net - FtpWebRequest - 当服务器将当前目录默认为/(root)以外的其他目录时如何补偿文件上传?

当与某些服务器建立 FTP 连接时,服务器默认当前目录为根目录以外的某个目录。

例如:

服务器可能默认连接到“/”根。其他服务器可能默认为“/abc”。

将文件ftp://ftp.example.com/abc/mno/xyz/myfile.dat上传到 xyz 目录时,当当前目录不是“/”时,FtpWebRequest 返回 550。即 FtpWebRequest 正在制作路径 /abc/abc/mno/xyz/filename.dat 这不是有效路径,因此是 550。

是否有任何特殊的 URI 语法可以对此进行补偿,以便相同的 URI 适用于两种类型的服务器默认连接条件?

或者是否可以设置 FtpWebRequest 的某些属性以使其更智能?

0 投票
3 回答
2356 浏览

ftp - 可以通过 Filezilla 明确 ftps,但不能通过代码

正如标题所述,我可以通过 FileZilla Client 从我的服务器连接到另一台机器,但我不能通过代码(.Net - FTPWebRequest)

我知道代码很好,因为它可以在另一台机器上运行。我遇到问题的特定机器位于 NAT 后面,但 SA 已为来自我们尝试与之通信的主机的流量打开了所有端口。

任何建议 - 我错过了一些明显的东西吗?

我从尝试的连接中得到的异常是:

“无法从传输连接中读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。”

而且,我们尝试连接的机器的日志显示:

2010 年 7 月 26 日下午 12:40:23 -(未登录)(xx.xx.xxx.xxx)> 已连接,正在发送欢迎消息...

7/26/2010 12:40:23 PM -(未登录)(xx.xx.xxx.xxx)> 220-FileZilla 服务器版本 0.9.32 beta

2010 年 7 月 26 日下午 12:40:23 -(未登录)(xx.xx.xxx.xxx)> 220 ftp.xxxxxxxxxx.com

2010 年 7 月 26 日下午 12:40:23 -(未登录)(xx.xx.xxx.xxx)> AUTH TLS

7/26/2010 12:40:24 PM -(未登录)(xx.xx.xxx.xxx)> 234 使用身份验证类型 TLS

2010 年 7 月 26 日下午 12:41:24 - (未登录)(xx.xx.xxx.xxx)> 421 已超过登录时间。关闭控制连接。

2010 年 7 月 26 日下午 12:41:24 -(未登录)(xx.xx.xxx.xxx)> 已断开连接。

0 投票
1 回答
894 浏览

.net - NAT 后面的 FTPWebRequest (PASV,SSL)

有没有人成功地使用 .Net FTPWebRequest 类从 NAT 后面 ftps 到远程服务器?我的代码如下:

我得到以下异常:

“无法从传输连接中读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。”

我知道代码很好,因为如果机器不在 NAT 后面,它就可以工作。有任何想法吗?这台机器有一个静态 IP 并且所有端口都对进出指定主机的流量开放。

0 投票
2 回答
3461 浏览

c# - FtpWebrequest - 文件名包含德语“元音变音”,如 ä,ö

我正在尝试通过 FTP 每个 FtpWebrequest 获取文件 - 当文件名包含德语变音符号(如 ä、ö、ü)时,下载失败。

代码:

将文件名更改为“带有 ae.xls 的文件名”时,它可以工作。

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

通过 ftp 的目录列表运行良好并显示文件名:

输出是“带有ä.xls 的文件名”。

是否有人有提示如何处理该问题-我对命名该文件没有任何影响...

非常感谢提前托比

0 投票
1 回答
2772 浏览

c# - 如何使用 C# 在 FTP 中进行多次上传/下载

如何在不使用 FtpWebRequest 的情况下使用 C# 在 FTP 中进行多次上传/下载?

我有一个想法可以使用线程来实现,但我无法开始。

如果任何机构有一些代码片段供参考,以使用线程在 FTP 中进行多次上传/下载,这将很有帮助。