AIR NativeProcess执行此任务,但它将进度数据发送到ProgressEvent.STANDARD_ERROR_DATA

时间:2013-05-05 12:37:39

标签: flex air

在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

...

我的代码出了什么问题?我该怎么调试呢? 感谢。

1 个答案:

答案 0 :(得分:2)

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