commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kristof Neirynck (JIRA)" <j...@apache.org>
Subject [jira] Commented: (NET-324) ant ftp doesn't download files in subdirectories when remotedir is empty or root folder
Date Sat, 15 May 2010 01:35:43 GMT

    [ https://issues.apache.org/jira/browse/NET-324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12867776#action_12867776
] 

Kristof Neirynck commented on NET-324:
--------------------------------------

See issue 49296 on the Ant Bug tracking system:
https://issues.apache.org/bugzilla/show_bug.cgi?id=49296

> ant ftp doesn't download files in subdirectories when remotedir is empty or root folder
> ---------------------------------------------------------------------------------------
>
>                 Key: NET-324
>                 URL: https://issues.apache.org/jira/browse/NET-324
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Windows 7, 64bit, apache-ant-1.8.1, commons-net-2.0, jakarta-oro-2.0.8,
FileZilla Server version 0.9.34 beta
>            Reporter: Kristof Neirynck
>            Priority: Minor
>
> I'm trying to download files in subdirectories from an ftp server with ant. The exact
set of files is known. Some of them are in subdirectories. Ant only seems to download the
ones in the root directory. It does work if I download all files without listing them.
> At first I thought I was doing something wrong so I posted a question on stackoverflow.
> http://stackoverflow.com/questions/2790570/ant-ftp-doesnt-download-files-in-subdirectories
> You can see my scriptdef workaround in the answers there.
> The first ftp action should do the exact same thing as the second. Instead I get "Hidden
file \\a\a.txt assumed to not be a symlink."
> {code:title=build.xml}
> <?xml version="1.0" encoding="utf-8"?>
> <project name="example" default="example" basedir=".">
>     <taskdef name="ftp" 
>     classname="org.apache.tools.ant.taskdefs.optional.net.FTP" />
>     <target name="example">
>         <!-- doesn't work -->
>         <ftp action="get" verbose="true"
>         server="localhost" userid="example" password="example" 
>         remotedir="">
>             <fileset dir="downloads" casesensitive="false" 
>             includes="a/a.txt,a/b/ab.txt,c/c.txt" />
>         </ftp>
>         <!-- works (but requires multiple ftp tasks) -->
>         <ftp action="get" verbose="true"
>         server="localhost" userid="example" password="example"
>         remotedir="a">
>             <fileset dir="downloads" casesensitive="false" 
>             includes="a.txt,b/ab.txt" />
>         </ftp>
>         <ftp action="get" verbose="true"
>         server="localhost" userid="example" password="example"
>         remotedir="c">
>             <fileset dir="downloads" casesensitive="false" 
>             includes="c.txt" />
>         </ftp>
>     </target>
> </project>
> {code}
> {code:title=build-with-workaround.xml}
> <?xml version="1.0" encoding="utf-8"?>
> <project name="example" default="example" basedir=".">
>     <taskdef name="ftp" 
>     classname="org.apache.tools.ant.taskdefs.optional.net.FTP" />
>     <target name="example">
> <scriptdef name="my-ftp-get" language="javascript">
>     <attribute name="server"/>
>     <attribute name="userid"/>
>     <attribute name="password"/>
>     <attribute name="remotedir"/>
>     <attribute name="fileset_dir"/>
>     <attribute name="fileset_includes"/>
>     <![CDATA[
>     importClass(java.io.File);
>     importClass(org.apache.tools.ant.taskdefs.optional.net.FTP);
>     var local_basedir = "" + attributes.get("fileset_dir") + "/";
>     var original_includes = "" + attributes.get("fileset_includes");
>     var remotedir = "" + attributes.get("remotedir");
>     local_basedir = local_basedir.replace(/\\/g, "/");
>     original_includes = original_includes.replace(/\\/g, "/");
>     remotedir = remotedir.replace(/\\/g, "/");
>     var includes_arr = original_includes.split(",");
>     var clean_includes = {};
>     for (var i = 0; i < includes_arr.length; i++) {
>         var directory = "/";
>         var filename = includes_arr[i];
>         var split_include = includes_arr[i].split("/");
>         if (split_include.length > 1) {
>             directory = split_include[0] + "/";
>             filename = includes_arr[i].substring(directory.length);
>         }
>         if (!clean_includes.hasOwnProperty(directory)) {
>             clean_includes[directory] = [];
>         }
>         clean_includes[directory].push(filename);
>     }
>     var get_files = new FTP.Action();
>     get_files.setValue("get");
>     for (var path in clean_includes) {
>         var current_clean_includes = clean_includes[path].join(",");
>         var fileset = project.createDataType("fileset");
>         var ftp = self.project.createTask("ftp");
>         ftp.setAction(get_files);
>         ftp.setServer(attributes.get("server"));
>         ftp.setUserid(attributes.get("userid"));
>         ftp.setPassword(attributes.get("password"));
>         ftp.setRemotedir(remotedir + path);
>         fileset.setDir(new File(local_basedir + path));
>         fileset.setIncludes(current_clean_includes);
>         ftp.addFileset(fileset);
>         ftp.perform();
>     }
>     ]]>
> </scriptdef>
> <my-ftp-get
> server="localhost" userid="example" password="example"
> remotedir=""
>     fileset_dir="downloads" casesensitive="false" 
>     fileset_includes="a/a.txt,a/b/ab.txt,c/c.txt">
> </my-ftp-get>
>     </target>
> </project>
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message