在我们的一个项目中,我们使用 Apache 的 FTP 客户端 API。我必须将 xml 文件上传到 FTP 服务器,其中一个进程将继续轮询该服务器目录。所以使用上传API,我上传扩展名为.TRANSFER 的xml 文件,成功上传完整文件后,该文件将重命名为.xml 文件。
我面临的奇怪问题是,有时文件的文件大小为 0 字节。但有时会完全上传相同的文件。当我查看日志文件时,传输的字节仅为 0 kb。所以我不确定可能是什么问题。
我正在使用 linux 服务器和 Apache 的 commons 的 FTP 客户端 API。
任何调试提示和技巧都会有所帮助。
问候, 斯里尼瓦斯
我有一个巨大的文件存储库,并且有一个包含需要上传到 ftp 服务器的大列表的 .txt。我没有 ssh 访问权限。有没有一种简单的方法可以使用终端自动执行此操作,这样我就不必进入 ftp 并手动上下文件夹?
谢谢
{EDIT} 我正在使用 os x。我以客户的身份获取。
我正在使用 php 的 ftp_rename 函数,并在重命名文件的扩展名以指示它已被下载时收到权限被拒绝错误。
为了确保这不是 php 配置问题,我尝试手动 ftping。这是我难住的地方。
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rwxrwxrwx 1 1000 1000 179 Oct 18 16:12 File_20101018041300.csv
226 Directory send OK.
ftp> rename File_2010101804300.csv File_20101018041300.csv.downloaded
550 Permission denied.
Run Code Online (Sandbox Code Playgroud)
知道发生了什么吗?
当我无法通过 SSH 访问服务器时,我通常通过 FTP 下载内容,如下所示:
wget -r ftp://user:pass@server/path/to/dir
Run Code Online (Sandbox Code Playgroud)
如何让我的密码更安全?我不喜欢密码在命令中,但是当我尝试这样的事情时:
wget -r ftp://user@server/path/to/dir
Run Code Online (Sandbox Code Playgroud)
它不起作用。它给我“登录不正确”。
我需要帮助向 FTP 服务器发送下载文件的请求...我编写了以下代码来使用 HTTP 下载文件它成功地工作但我不知道如何为 FTP 做..... 因为我已经使用套接字进行连接它必须通过这种方式完成只是建议我下载 FTP 文件的请求(发送到服务器)的格式是什么......
///////////////////////////编码////////////////////// ///////////////////////////////////
URL url_of_file=new URL("http://fs36.filehippo.com/4281/856e12e1656d480da79ef2b40581f75e/npp.6.2.Installer.exe");
String hostaddress=url_of_file.getHost();
Socket mysocket3 = new java.net.Socket();
//create socket to server for HTTP use port 80 for FTP use 21 //
mysocket3.connect(new InetSocketAddress(hostaddress,80));
OutputStream os = mysocket3.getOutputStream();
int file_size=5860557;
//REQUEST Formate for HTTP ..........//
String getRequest = "GET " + url_of_file + " HTTP/1.1\r\n" +
"Host: "+ hostaddress + "\r\n" +
"Range: bytes=0-"+file_size+" \r\n\r\n";
os.write(getRequest.getBytes("UTF-8"));
os.flush();
InputStream in = mysocket3.getInputStream();
// 2. Recieving the data,..............
Run Code Online (Sandbox Code Playgroud) 我设置了 FTP 服务器(基于 ubuntu\vsftpd)。
我正在从互联网连接这个 ftp 服务器,所以我在服务器中激活了 SSL 安全功能。
为了检查一切是否正常,我使用 FileZiLla 进行了测试 -> 它正在运行。日志(来自 FileZilla):
Status: Connecting to ****:21...
Status: Connection established, waiting for welcome message...
Response: 220 (vsFTPd 3.0.2)
Command: AUTH TLS
Response: 234 Proceed with negotiation.
Status: Initializing TLS...
Status: Verifying certificate...
Command: USER ****
Status: TLS/SSL connection established.
Response: 331 Please specify the password.
Command: PASS ********
Response: 230 Login successful.
Command: SYST
Response: 215 UNIX Type: L8
Command: FEAT
Response: 211-Features:
Response: AUTH SSL
Response: AUTH …Run Code Online (Sandbox Code Playgroud) 我刚刚继承了一个 Wordpress 站点,该站点由另一位 Web 开发人员开发了一半。
该站点托管在 Strato 专用服务器上,并在其上安装了 Plesk。
我刚刚创建了一个 ftp 用户来获得对该站点的 ftp 访问权限。到这里为止,一切正常。
问题是并非所有目录和文件都显示在 ftp (FileZilla) 中。我知道还有更多文件,因为我可以在 Web 文件管理器中看到它们。
我以为是权限问题,但是我检查了所有权限,它们都是正确的。
任何想法可能是什么问题?
我遵循此MSDN指南将ASP.Net Web应用程序文件发布/上载到Azure Web App(资源管理器).但是每当子文件夹启动时都会出现UploadFile错误.根文件夹很好.
上传到ftp://XXXXXX.ftp.azurewebsites.windows.net/site/wwwroot/bin/Antlr3.Runtime.dll 从C:\用户\ SampleWebApp\BIN\Antlr3.Runtime.dll
使用"2"参数调用"UploadFile"的异常:
远程服务器返回错误:(550)文件不可用(例如,找不到文件,没有访问权限)
Param(
[string] [Parameter(Mandatory=$true)] $AppDirectory,
[string] [Parameter(Mandatory=$true)] $WebAppName,
[string] [Parameter(Mandatory=$true)] $ResourceGroupName
)
$xml = [Xml](Get-AzureRmWebAppPublishingProfile -Name $webappname `
-ResourceGroupName $ResourceGroupName `
-OutputFile null)
$username = $xml.SelectNodes("//publishProfile[@publishMethod=`"FTP`"]/@userName").value
$password = $xml.SelectNodes("//publishProfile[@publishMethod=`"FTP`"]/@userPWD").value
$url = $xml.SelectNodes("//publishProfile[@publishMethod=`"FTP`"]/@publishUrl").value
Set-Location $appdirectory
$webclient = New-Object -TypeName System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$files = Get-ChildItem -Path $appdirectory -Recurse | Where-Object{!($_.PSIsContainer)}
foreach ($file in $files)
{
if ($file.FullName)
$relativepath = (Resolve-Path -Path $file.FullName -Relative).Replace(".\", "").Replace('\', '/')
$uri = New-Object …Run Code Online (Sandbox Code Playgroud) 我正在开发一个可以发送fttp请求的类,它有一个可以执行不同类型的ftp方法的实用工具方法:
private FtpWebResponse DoFttpRequest(Uri uri, NetworkCredential credentials, string method, string file = null)
{
var request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = credentials;
request.Method = method;
if (!string.IsNullOrEmpty(file))
{
using (var stream = request.GetRequestStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(file);
}
}
return (FtpWebResponse)request.GetResponse();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,此方法执行ftp方法并将响应流返回给调用者.以下是使用此方法通过ftp将字符串内容写入文件的客户端方法:
public void WriteToFile(string path, string contents)
{
var uri = new Uri(path);
using (var ftpResponse = DoFttpRequest(uri, _credentials, Ftp.UploadFile, contents)) { }
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这里我使用空的using语句using (var ftpResponse = DoFttpRequest(uri, _credentials, Ftp.UploadFile, contents)) { } …
我确定有一种在docker中安装ftp的方法,但我不知道如何。我看着其他人的Dockerfile,但是他们的代码非常复杂。是否有直接的前言方式在Dockerfile中安装和配置ftp?