MATLAB Answers

Error downloading .txt or .nc files through the ftp link

17 ビュー (過去 30 日間)
Farshid Daryabor
Farshid Daryabor 2020 年 1 月 8 日
コメント済み: Farshid Daryabor 2020 年 2 月 4 日
By using the following function;
>> ftpobj = ftp('ftp://nrt.cmems-du.eu/Core/INSITU_GLO_NRT_OBSERVATIONS_013_030/glo_multiparameter_nrt/index_monthly.txt',username,password,'System','UNIX')
I am encountering with the error message, I reaaly appreciate any help.
Error using connect (line 18)
Could not open a connection to "ftp", port "NaN".
Error in ftp (line 75)
connect(h)
Thanks

  1 件のコメント

Geoff Hayes
Geoff Hayes 2020 年 1 月 8 日
Farshid - please see ftp host input parameter to get an idea of how the host should be constructed. You seem to be passing a link to a file rather than the name of the FTP server (with or without the port).

サインイン to comment.

回答 (2 件)

Andrew Janke
Andrew Janke 2020 年 1 月 31 日
Geoff is right. You're passing a URL to ftp(), when it only accepts host names. You need to do the directory navigation and file selection in a separate step once you're connected. Try this:
remote_dir = 'Core/INSITU_GLO_NRT_OBSERVATIONS_013_030/glo_multiparameter_nrt';
remote_file = 'index_monthly.txt';
f = ftp('nrt.cmems-du.eu',username,password);
cd(f, remote_dir)
mget(f, remote_file)

  7 件のコメント

表示 4 件の古いコメント
Andrew Janke
Andrew Janke 2020 年 2 月 3 日
What version of Matlab are you running? Your example code fails for me in Matlab R2016b and R2017b, but works in R2018b and R2019b. (On macOS.) (Oddly, I looked at the source for ftp/mget and I don't really see what it's doing different between R2017b and R2018b. And I'm pretty sure it's using the same version of Apache Commons FTP.) You could upgrade to Matlab R2018b and maybe it'll work. Or you could try my alternative jl.net.ftp.FtpClient class: https://github.com/apjanke/janklab/blob/master/Mcode/classes/%2Bjl/%2Bnet/%2Bftp/FtpClient.m.
Farshid Daryabor
Farshid Daryabor 2020 年 2 月 3 日
could you show me example to run?
f = jl.net.ftp.FtpClient('Core/INSITU_GLO_NRT_OBSERVATIONS_013_030/glo_multiparameter_nrt')
Undefined variable "jl" or class "jl.net.ftp.FtpClient".
Geoff Hayes
Geoff Hayes 2020 年 2 月 3 日
Farshid - I modified your above comment to remove the host, username, and password from the code. I strongly recommend that you don't post such information on a public forum.

サインイン to comment.


Farshid Daryabor
Farshid Daryabor 2020 年 2 月 3 日
what do you mean? You mean to add "Ftp Client.m" to the path and run it?

  6 件のコメント

表示 3 件の古いコメント
Andrew Janke
Andrew Janke 2020 年 2 月 3 日
You know what, my FtpClient isn't working with that server either. It's also getting error 500 reply codes. I don't know what's going on there. I'll try turning on some protocol level logging to see what's going on.
Andrew Janke
Andrew Janke 2020 年 2 月 3 日
Aha: You need to use Passive Mode. (Which is the whole reason I wrote that FtpClient in the first place.)
f = jl.net.ftp.FtpClient('nrt.cmems-du.eu', [], my_username, my_password);
f.connect;
f.pasv;
f.cd(remote_dir);
f.mget(remote_file);
Farshid Daryabor
Farshid Daryabor 2020 年 2 月 4 日
Dear Andrew,
I'm really sorry for the delay in feedback. I actually added "class" and "toplevel" packages to the path. However, I did find some imbalance errors in "FtpClient" which I cleaned some of, but in the list below some errors have confused me to clear. Could you please tell me how I can fix it, thanks in advance.
% Remote host to connect to
host (1,1) string = string(missing)
% Port for the command port
port (1,1) double = NaN
% Username to log in as. Defaults to 'anonymous'.
username (1,1) string = 'anonymous'
% Password to provide. Defaults to your email address from Matlab's
% Internet prefs
password string = repmat('', [0 0])
% Account to use in addition to username and password. May be empty to
% indicate "no account"
account string = repmat('', [0 0])
end
properties(Dependent)

サインイン to comment.

サインイン してこの質問に回答します。

タグ


Translated by