2013-08-26 72 views
0

我爲笨拙的英語提前道歉) 我在Flex中啓動cURL時遇到問題。這裏是我的代碼:cURL不能在Flex中工作(as3)

private var process:NativeProcess; 
private var file:File = new File(); 
private var uploadFile:File = new File(); 
private var username:String = "user"; 
private var password:String = "pass"; 
private var server:String = "ftp:\\--.---.---.---"; 

public var loadingBar:LoadingBar; 

private function startUpload(event:Event):void 
{ 
    loadingBar = LoadingBar(PopUpManager.createPopUp(this, LoadingBar, true)); 
    loadingBar.progressBar.source = process; 
    PopUpManager.centerPopUp(loadingBar); 

    file.nativePath = "C://curl.exe"; 
    uploadFile.nativePath = "C://001.mov"; 

    var arguments:Vector.<String> = new Vector.<String>(); 
    arguments.push("curl -T " + uploadFile.nativePath + " " + server + " -u " + username + ":" + password); 
    //arguments.push("curl http://isc.sans.org/infocon.txt"); 
    trace(arguments); 

    var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
    nativeProcessStartupInfo.arguments = arguments; 
    nativeProcessStartupInfo.executable = file; 

    process = new NativeProcess(); 
    process.start(nativeProcessStartupInfo); 

    process.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, onStandardErrorData); 
    process.addEventListener(NativeProcessExitEvent.EXIT, onStandardOutputExit); 

    process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutputData); 

    process.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, onOutputIOError); 
    process.addEventListener(IOErrorEvent.STANDARD_INPUT_IO_ERROR, onInputClose); 
    process.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, onStandardIOError); 
} 

standardErrorData問題「%合計%收稿%Xferd平均速度時間時間時間電流

     Dload Upload Total Spent Left Speed 

0 0 0 0 0 0 0 0 - - : - - : - : - - : - : - 0「 然後 」curl:(6)無法解析主機:curl -TC:\ 001.mov ftp:--.---。 ---.--- -u用戶「。這是奇怪的結腸,這是奇怪的..

如果我用最簡單的命令,而不是在它之前的一個註釋行,我得到一個錯誤「curl:(1)Protocol curl http在libcurl中不支持或禁用「。

我不明白是爲什麼那麼因爲命令行相同的命令工作正常!

回答

0

你的參數向量是不對的,你應該使用每個參數(不幸的是,Adobe Live Docs不看好這個應該是怎樣的樣子很清楚),一個單獨的條目,也沒有必要通過curl作爲參數,過程已經知道可執行文件。

var arguments:Vector.<String> = new Vector.<String>(); 
arguments[0] = '-T'; 
arguments[1] = uploadFile.nativePath; 
arguments[2] = server; 
arguments[3] = '-u'; 
arguments[4] = username + ':' + password; 

,並確保

curl -T uploadfile server -u user:passwd 

實際上是正確的格式。至少在the manual的例子有一點不同,它們看起來像

curl -T uploadfile -u user:passwd server 

不知道這是否有差別。

+0

是啊!這比我想象的要容易。你剛剛救了我的命) – Creativcheck