请向我推荐一些支持目录监控的 sftp 和 ftp 的 java 客户端库。
谢谢你。
我正在尝试将本地服务器中的文件存储在 ftp 服务器上。
源文件在我当前目录中(与 php 文件相同)
我运行脚本 http://www.server.co.za/kisv2/xmltest/export.php
要上传到 ftp 的文件是 http://www.server.co.za/kisv2/xmltest/exportfile.csv
目标ftp路径是: ftp://ftp.ftpserver.co.za/LocExports/exportfile.csv
我的 ftp 登录默认为: ftp://ftp.ftpserver.co.za
所以我想将当前目录中的文件复制exportfile.csv到ftp://ftp.ftpserver.co.za/LocExports/exportfile.csv
我当前的语法是:
$source = 'exportfile.csv'; //this is a file in the same directory as my php file. full path is... http://www.server.co.za/kisv2/xmltest/exportfile.csv
$target = '/LocExports/exportfile.csv'; //full path is... ftp://ftp.ftpserver.co.za/LocExports/exportfile.csv
$conn = ftp_connect("ftp.ftpserver.co.za") or die("Could not connect");
ftp_login($conn, "username", "password");
$upload = ftp_put($conn, $target, $source, FTP_ASCII);
if (!$upload) { echo 'FTP upload failed!'; }
echo "complete";
Run Code Online (Sandbox Code Playgroud)
这给了我错误Warning: ftp_put() [function.ftp-put]: Opening …
好的,所以我必须在FTP服务器上上传一个目录,里面有子目录和文件.但我似乎无法做对.我想上传目录,包含它的子目录和文件.
ftp = FTP()
ftp.connect('host',port)
ftp.login('user','pass')
filenameCV = "directorypath"
def placeFiles():
for root,dirnames,filenames in os.walk(filenameCV):
for files in filenames:
print(files)
ftp.storbinary('STOR ' + files, open(files,'rb'))
ftp.quit()
placeFiles()
Run Code Online (Sandbox Code Playgroud) 我试图在java中实现ftp下载.我正在使用apache common-net library但是我得到了这个异常.我打印出下面的堆栈跟踪我不知道我错过了什么
org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:317)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:483)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:608)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:582)
at org.apache.commons.net.ftp.FTP.pasv(FTP.java:1007)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:869)
at org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1854)
at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1845)
Run Code Online (Sandbox Code Playgroud)
我有一个方法如下
public void downloadFromFtp(Map<String, String> ftpMap, String sourceWithPath,
String destinationFolder) throws IOException {
String hostname = ftpMap.get("hostname");
String username = ftpMap.get("username");
String password = ftpMap.get("password");
if (null == hostname || null == username || null == password) {
throw new InvalidInputException(
"Invalid RMS FTP hostname/username/password");
}
//Connect to ftp url
ftpClient.connect(hostname, 21);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//login …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试从FTP服务器检索文件,以便用户可以下载.ftp_get()把它写到本地机器上的路径,是的,但是我想要的是它也出现在下载历史记录中,并且从互联网上算作"正常"下载,但我还没弄清楚如何做到这一点.我还尝试直接链接到PHP中的文件,header("Location: ftp://username:password@ftp.server.com/myfile.file")但这导致浏览器显示文件内容(我不想要).我错过了任何header参数吗?或者有一种完全不同的方式来做到这一点?
问题是:PHP可以ftp_delete()删除文件夹吗?我有一个ftp_delete()用于删除ftp文件的进程,但我担心如果文件名为空,我可能会意外删除文件夹.
我正在使用以下代码将文件上传到sFTP服务器。我已经使用FileZilla完成了测试上传,并且文件已成功上传。
try
{
var client = new SftpClient(host, port, username, password);
client.Connect();
client.ChangeDirectory(workingDir);
var listDirectory = client.ListDirectory(workingDir);
foreach (var file in files)
{
var fileStream = new FileStream(file, FileMode.OpenOrCreate);
client.BufferSize = 4 * 1024; // bypass payload error large files
client.UploadFile(fileStream, Path.GetFileName(file));
Log.Info(string.Format("File [{0}] upload complete",file));
}
}
catch (Exception ex)
{
Log.Error(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)
但是在上面的代码中,我似乎无法完成上传,因为出现以下错误:
尚无此类主机
那也许是因为我使用主机的Url值而不是IP?(我已经使用IP使用另一台FtP服务器进行了测试,而且似乎也可以正常工作)我想知道是否是这种情况?如果是这样,是否有办法让SftpClient(Ssh.Net)处理Url?
我想准备所有要通过FTP上传的文件.我试过命令dotnet publish -c Release -o ~/Desktop/toFtp.不幸的是,视图文件夹未被复制 有办法吗?
有没有一种方法可以从最后一行(文件结尾)仅下载部分文件。就像文件超过40 MB,而我只想检索最后一块,假设是2042个字节。有可能使用python 3和ftplib来做到这一点吗?
我正在Java中使用Apache Commons-Net库
我想要的是使用Java代码在客户端阶段设置FTP服务器的连接超时
例如:
如果我查看FTP服务器的vsftpd.conf设置文件,
有一个idle_session_timeout=600设置
我想知道FTP客户端是否可以使用Java代码控制此空闲超时
下面的方法,我尝试了但并非所有方法都有效
FTPClient.setControlKeepAliveTimeout(sec);
FTPClient.setConnectTimeout(ms);
FTPClient.setDataTimeout(ms);
FTPClient.connect();
FTPClient.setSoTimeout(ms);
Run Code Online (Sandbox Code Playgroud)
请帮我 :)
ftp ×10
java ×3
php ×3
c# ×2
python ×2
sftp ×2
.net-core ×1
asp.net-core ×1
directory ×1
download ×1
file-upload ×1
ftplib ×1
publish ×1
python-3.x ×1
ssh ×1