问题标签 [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.
c# - FtpWebRequest 下载文件
以下代码旨在通过 FTP 检索文件。但是,我遇到了一个错误。
错误是:
远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)
该文件确实存在于远程机器上,我可以手动执行这个 ftp(即我有权限)。谁能告诉我为什么我会收到这个错误?
.net - .NET FtpWebRequest 不返回 DateTimeStamp 或 FileSize
我正在使用 FtpWebRequest 连接到 FTP 服务器,并且可以使用 WebRequestMethods.Ftp.ListDirectoryDetails 列出目录详细信息。然而,来自远程服务器的响应有日期、月份和时间,但没有年份:
-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 来获取每个文件的日期时间戳,但响应始终为空。不会抛出异常。
有没有人知道为什么会这样?
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”-命令应该返回不同于“/”的内容)
c# - C# FtpWebRequest 错误 403
我有以下代码通过 FTP 检索文件:
这在大多数情况下都有效,但我有一台客户端机器出现异常:
谁能告诉我为什么会这样?在所有客户端上运行的代码完全相同(包括相同的用户名和密码)?
c# - FtpWebRequest 下载文件大小不正确
我正在使用以下代码从远程 ftp 服务器下载文件:
我正在下载的文件是一个 dll,我的问题是它正在以某种方式被这个过程改变。我知道这是因为文件大小在增加。我怀疑这部分代码有问题:
任何人都可以就可能出现的问题提供任何想法吗?
.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 的某些属性以使其更智能?
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)> 已断开连接。
.net - NAT 后面的 FTPWebRequest (PASV,SSL)
有没有人成功地使用 .Net FTPWebRequest 类从 NAT 后面 ftps 到远程服务器?我的代码如下:
我得到以下异常:
“无法从传输连接中读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。”
我知道代码很好,因为如果机器不在 NAT 后面,它就可以工作。有任何想法吗?这台机器有一个静态 IP 并且所有端口都对进出指定主机的流量开放。
c# - FtpWebrequest - 文件名包含德语“元音变音”,如 ä,ö
我正在尝试通过 FTP 每个 FtpWebrequest 获取文件 - 当文件名包含德语变音符号(如 ä、ö、ü)时,下载失败。
代码:
将文件名更改为“带有 ae.xls 的文件名”时,它可以工作。
异常是: WebException:远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。
通过 ftp 的目录列表运行良好并显示文件名:
输出是“带有ä.xls 的文件名”。
是否有人有提示如何处理该问题-我对命名该文件没有任何影响...
非常感谢提前托比
c# - 如何使用 C# 在 FTP 中进行多次上传/下载
如何在不使用 FtpWebRequest 的情况下使用 C# 在 FTP 中进行多次上传/下载?
我有一个想法可以使用线程来实现,但我无法开始。
如果任何机构有一些代码片段供参考,以使用线程在 FTP 中进行多次上传/下载,这将很有帮助。