通过FTP自动下载目录

时间:2016-08-29 21:02:24

标签: xml powershell ftp

我需要通过观察XML文件的更改,下载XML中引用的所有远程图像(因为InDesign无法使用远程图像),在InDesign中自动创建PDF,将XML转换为引用下载的本地图像路径,加载InDesign模板,然后执行XML合并并将结果导出为PDF。

我目前正在侦听XML文件的更改并使用PowerShell启动InDesign,但我仍然坚持如何获取所需的图像。

我想的不是尝试读取XML而只是下拉引用的图像,我只能下载整个图像目录。我已经考虑过使用 FtpWebRequest 类通过PowerShell执行此操作,但批处理和.NET脚本不是我的强项,我只能找到下载单个文件的示例,或者列表基于CSV清单的文件。

我是一名JS开发人员,所以我使用像gulp这样的任务运行器和ftp模块来研究Node.js实现,但我不确定这是一个很好的解决方案,还是它甚至可以做到我想要的是什么。

如果必须在Windows计算机上执行此操作,那么您的工作流程是什么?

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用node.js和gulp创建一个侦听目录的构建环境(使用gulp-watch),并在检测到XML文件更改时启动构建:

gulp.task('watchXml', function() {
    watch('input/*.xml', batch(function (events, done) {
        gulp.start('build', done);
    }));
});

我使用npm 请求模块通过HTTP(而不是FTP)下载图像,并使用 fs 模块将它们传输到本地文件系统。下载和XSLT完成后,我可以运行shell命令以使用child_process启动InDesign:

var exec = require('child_process').exec;

gulp.task('shell', function(done) {
    exec('start "" "C:\\Program Files\\Adobe\\Adobe InDesign CC 2015\\InDesign.exe"', function(err, stdout, stderr) {
        if (err) {
            done();
            return console.log('error:', err);
        }
        console.log('InDesign launched.');
        done();
    });
});

从那里,InDesign启动脚本接管,导入XML并创建PDF。