使用Matlab从ftp下载数据

时间:2014-07-24 19:32:01

标签: matlab ftp

我需要从Ftp服务器下载大量数据。现在我想用matlab来完成这项任务

我的ftp地址是     http://e4ftl01.cr.usgs.gov/MOLT/MOD09GA.005/2008.03.17/

文件名是:

“MOD09GA.A2008077.h23v05.005.2008080122921.hdf”“MOD09GA.A2008077.h22v05.005.2008080122814.hdf”

数据将保存在驱动器E中的文件夹中。

我想使用Matlab下载该文件。这样我就想从ftp服务器上下载数据。

等待你的帮助。 在此先感谢

谢谢你的代码。但是有一个问题。我只需要下面的2个数据:“MOD09GA.A2008077.h23v05.005.2008080122921.hdf”“MOD09GA.A2008077.h22v05.005.2008080122814.hdf”

但我需要这个数据的ID,以消除额外的字母: “MOD09GA.A2008077.h23v05.hdf”  “MOD09GA.A2008077.h22v05.hdf”

我希望通过313个数据获得2个数据。怎么办? 请帮忙。

2 个答案:

答案 0 :(得分:1)

从技术上讲,您使用HTTP而不是FTP进行下载。

您可以让Matlab将URL的内容复制到本地文件:

url = 'http://e4ftl01.cr.usgs.gov/MOLT/MOD09GA.005/2008.03.17/MOD09GA.A2008077.h23v05.005.2008080122921.hdf'
urlwrite(url, 'tmp.hdf');

然后查看文件中的内容:

hdfinfo('tmp.hdf')

答案 1 :(得分:1)

正如dpwe已经说过的那样,从技术上讲,你不是通过FTP下载的。 然而,这是一个针对您的案例量身定制的解决方案,它首先获得您想要的所有文件名,即"。* hdf"文件。然后它会循环遍历所有找到的* .hdf文件并将其下载到本地路径'。

这绝对不是最简单或最干净的方式,但它确实有效,它应该符合您的需求,我希望。

% URL you want to grab from - has to end with a /
URL = 'http://e4ftl01.cr.usgs.gov/MOLT/MOD09GA.005/2008.03.17/';
% Local path on your machine
localPath = 'E:/myfolder/';

% Read html contents and parse file names with ending *.hdf
urlContents = urlread(URL);
ret = regexp(urlContents, '"\S+.hdf"', 'match');

% Loop over all files and download them
for k=1:length(ret)
    filename = ret{k}(2:end-1);
    filepathOnline = strcat(URL, filename);
    filepathLocal = fullfile(localPath, filename);
    urlwrite(filepathOnline, filepathLocal);
end