我需要从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个数据。怎么办? 请帮忙。
答案 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