0

在 Flex AIR 应用程序中,我想使用 NativeProcess API 和 curl 将文件上传到 ftp-server。
这是简化的代码:

protected function startProcess(event:MouseEvent):void
{
    var processInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    processInfo.executable = new File('/usr/bin/curl');
    var processArgs:Vector.<String> = new Vector.<String>();
    processArgs.push("-T");                 
    processArgs.push("/Users/UserName/Desktop/001.mov");                    
    processArgs.push("ftp://domainIp//www/site.com/");                  
    processArgs.push("--user");                 
    processArgs.push("username:password");                  
    processInfo.arguments = processArgs;

    var process:NativeProcess = new NativeProcess();
    process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, outputDataHandler);
    process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, errorOutputDataHandler);
    process.start(processInfo);
}

它很好地完成了这项工作(即上传了目标文件),但它发出ProgressEvent.STANDARD_ERROR_DATA而不是ProgressEvent.STANDARD_OUTPUT_DATA所有进度数据都转到process.standardError.

protected function errorOutputDataHandler(event:ProgressEvent):void
{
    var process = event.currentTarget as NativeProcess;
    trace(process.standardError.readUTFBytes(process.standardError.bytesAvailable));
}

这是后一个函数的输出:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

1 15.8M    0     0    1  200k      0   166k  0:01:37  0:00:01  0:01:36  177k

2 15.8M    0     0    2  381k      0   143k  0:01:53  0:00:02  0:01:51  146k

...

我的代码有什么问题?我该如何调试它?
谢谢。

4

1 回答 1

2

你看到的是 curl 的进度表。尝试-sS禁用它但保留错误消息的选项。

于 2013-05-05T14:28:01.407 回答