Re: LWP::Simple getstore with absolute path not working
- From: "Peter J. Holzer" <hjp-usenet2@xxxxxx>
- Date: Mon, 16 Jun 2008 16:42:39 +0200
On 2008-06-16 06:34, emrefan <dksleung@xxxxxxxxxxx> wrote:
On Jun 16, 5:55 am, "szr" <sz...@xxxxxxxxxxxxxxx> wrote:
You may want to test it in a browser and then in your script add checks
to catch cases where adir or file doesn't exist.
ftp://host/%2fdir-under-the-root/some-dir/some-file
where %2f is a url-encoded '/'; but strictly speaking this requires
your FTP server to support a chdir to '/dir-under-the-root' in one
go, which is not required. Most do, however.
It should support a chdir to / (if it has a directory called "/"), so
you should be able to write
ftp://host/%2f/dir-under-the-root/some-dir/some-file
then.
Why would it need to do that? Give that url, it should be going to
"/fdir-under-the-root/some-dir/some-file" in one go.
When a user logs in via ftp (including when the user is "anonymous"),
he is placed in wherever is considered his home directory and if this
home directory does not happen to be "/", then the URL with just a
slash after the hostname is not going to work as intended. I tested
that, had problems and so queried. With an "%2f" after the hostname,
it worked. I reckond I'd call that a bug in URI.pm & co. but at least
I now have a workaround.
It's not a bug. That's how FTP URIs are supposed to work. To quote from
RFC 1738:
| The url-path of a FTP URL has the following syntax:
|
| <cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>
|
| Where <cwd1> through <cwdN> and <name> are (possibly encoded) strings
| and <typecode> is one of the characters "a", "i", or "d".
[...]
| The url-path is interpreted as a series of FTP commands as follows:
|
| Each of the <cwd> elements is to be supplied, sequentially, as the
| argument to a CWD (change working directory) command.
|
| If the typecode is "d", perform a NLST (name list) command with
| <name> as the argument, and interpret the results as a file
| directory listing.
|
| Otherwise, perform a TYPE command with <typecode> as the argument,
| and then access the file whose name is <name> (for example, using
| the RETR command.)
So ftp://host/%2fdir-under-the-root/some-dir/some-file means:
Connect to host and log in as anonymous.
cwd /dir-under-the-root
cwd some-dir
retr some-file
Note that /dir-under-the-root is only a directory under the root on unix
and window systems. Other OSs may have other conventions (once upon a
time, FTP servers running VMS or IBM host OSs were common), and the host
OS may not even have the concept of a "root directory".
hp
.
- References:
- LWP::Simple getstore with absolute path not working
- From: emrefan
- Re: LWP::Simple getstore with absolute path not working
- From: Ben Morrow
- Re: LWP::Simple getstore with absolute path not working
- From: szr
- Re: LWP::Simple getstore with absolute path not working
- From: emrefan
- LWP::Simple getstore with absolute path not working
- Prev by Date: Re: Learning Perl
- Next by Date: Expat / XML::Parser / _crypt_struct
- Previous by thread: Re: LWP::Simple getstore with absolute path not working
- Next by thread: Re: LWP::Simple getstore with absolute path not working
- Index(es):
Relevant Pages
|