Getting a Directory Listing From an FTP Server |
|
Good morning, Mr. Lord ... :)
For ftp urls, just use get url
and provide a url that ends in "/".
What you get with an http url will depend on the server configuration. Usually the index.html page if it exists, and possibly an html-formatted directory listing it doesn't. But not all http servers return directory listings.put "ftp://ftp.somewhere.com/elsewhere/" into tUrl get url tUrl
Posted 8/2/2002 by Dave Cragg to the MetaCard List
Addendum 2/23/06 by Ken Ray: Don't forget that you would need to provide the user name and password for most FTP servers, so here's a generic example as a one-liner:What you get back is a true directory listing, that is delimited by spaces, as in:put url "ftp://username:password@ftp.somewhere.com/elsewhere/" into tListing
drwxr-x--x 6 iedev sonsothundergrp 4096 Feb 7 03:37 .
drwxr-xr-x 923 root root 24576 Feb 23 10:06 ..
-rw-r--r-- 1 iedev sonsothundergrp 24 Oct 7 19:02 .bash_logout
-rw-r--r-- 1 iedev sonsothundergrp 191 Oct 7 19:02 .bash_profile
-rw-r--r-- 1 iedev sonsothundergrp 124 Oct 7 19:02 .bashrc
drwxrwxr-x 3 iedev sonsothundergrp 4096 Feb 22 05:54 My Folder
drwxrwxr-x 5 iedev sonsothundergrp 4096 Oct 15 05:27 My Other Folder
drwxrwxrwx 3 iedev sonsothundergrp 4096 Feb 22 17:04 Her Folder
drwxrwxr-x 3 iedev sonsothundergrp 4096 Feb 8 04:55 Another Folder
lrwxrwxrwx 1 iedev sonsothundergrp 17 Oct 7 19:02 www -> /www/sonsothunder
Note also that the date column does not include the year (at least not on my Linux server).
To parse this, here's some code that can help extract the data into a tab-delimited format for display in a table field
and converts the date to appropriate "short date and time" format:
on mouseUp put url "ftp://username:password@ftp.somewhere.com/elsewhere/" into tListing put stsFormatFTPListing(tListing) into fld 2 end mouseUp function stsFormatFTPListing pData put "" into tNewData repeat for each line tLine in pData put replaceText(word 1 to 5 of tLine," +",tab) & tab after tNewData put replaceText(word 6 to 8 of tLine," +"," ") into tDateTime put _stsFixDateTime(tDateTime) & tab after tNewData put word 9 to (the number of words of tLine) of tLine & cr after tNewData end repeat delete char -1 of tNewData return tNewData end stsFormatFTPListing function _stsFixDateTime pDateTime -- Checks the date on the server to see if it is later than the current date; -- if so, it subtracts a year, otherwise we leave it alone put word -1 of the long date into tYear put word 1 to 2 of pDateTime into tDate put word -1 of pDateTime into tTime put tDate & ", " & tYear && tTime into tTest convert tTest to seconds if the seconds < tTest then -- "future", so subtract 1 put tYear - 1 into tYear end if put tDate & ", " & tYear && tTime into tDateTime convert tDateTime to short date and time return tDateTime end _stsFixDateTime