使用R语言{curl}包在FTP服务器创建文件夹失败求助
使用R语言{curl}包在FTP服务器创建文件夹失败求助
我来帮你排查这个问题!你遇到的Failed initialization错误,大概率是参数拼写、请求命令格式或者URL写法的问题,咱们一步步来解决:
首先先揪出一个明显的小错误:你代码里的password写成了passowrd,拼写错误肯定会导致认证失败,先把这个修正过来!
然后说回FTP创建目录的正确姿势:
- 标准的FTP创建目录命令是
MKD,不是你试的MkDir或者ftp-create-dirs,后者不是curl支持的自定义请求命令; - 用户名和密码可以用
userpwd参数合并设置(用冒号分隔用户名和密码),这样比分开设置更稳妥; - URL的写法尽量不要加末尾的斜杠,直接写
ftp://my_ip_address/test就好,多余的斜杠可能会让服务器解析出问题。
给你一个修正后的完整代码示例:
library(curl) # 创建并配置handle,修正拼写+使用标准命令 h <- curl::new_handle() |> curl::handle_setopt( customrequest = "MKD", userpwd = "my_username:my_password" # 注意是正确的password拼写,冒号分隔账号密码 ) # 发送创建目录请求 response <- curl::curl_fetch_memory(url = "ftp://my_ip_address/test", handle = h) # 查看响应状态码判断是否成功:257表示目录创建成功,200系列一般是成功状态 cat("请求状态码:", response$status_code, "\n")
如果还是报错,可以试试这些排查技巧:
- 加上被动模式设置:大多数现代FTP服务器需要被动模式,你可以在
handle_setopt里添加ftp_use_epsv = TRUE; - 开启 verbose 模式:添加
verbose = TRUE参数,这样能看到curl和服务器的交互细节,比如认证是否通过、命令是否正确发送,方便定位问题; - 检查服务器权限:确认你的FTP账号有创建目录的权限,服务器IP/端口正确,防火墙没有拦截FTP连接(默认端口是21,如果是自定义端口要在URL里加上,比如
ftp://my_ip_address:2121/test)。
备注:内容来源于stack exchange,提问作者Lefkios Paikousis
相关产品推荐
相关产品推荐

