2017-08-17 84 views
1

我通過FileTransfer plugin將通過Cordova的MediaCapture plugin錄製的視頻發送到遠程服務器,但沒有任何內容 - 無論是文件還是任何數據 - 到達服務器端。服務器收到請求,但似乎是空的。Cordova FileTransfer發送文件,但沒有收到任何文件

根據科爾多瓦,一切順利。下面是從成功回調讀出:

enter image description here

這是我的JS:(mediaFiles[0]被捕獲的視頻文件)

var options = new FileUploadOptions(); 
options.fileName = 'foo.bar'; 
options.mimeType = mediaFiles[0].type; 
options.params = { 
    mime: mediaFiles[0].type 
}; 

var ft = new FileTransfer(); 
ft.upload(
    mediaFiles[0].fullPath, 
    encodeURI("http://xxxxxx.com/receive-video.php"), 
    function (r) { 
     console.log(r); 
     alert('sent file!'); 
    }, 
    function (error) { 
     alert('error'); 
     console.log(error); 
    }, 
    options, 
    true 
); 

(注意最後PARAM,trustAllHosts,設置爲true,因爲我的測試服務器是自簽名的。)

科爾多瓦顯然認爲它是發送數據,但我的PHP腳本不同意。這裏是我的PHP:

file_put_contents(
    'readout.txt', 
    "Payload\n----------\n". 
    file_get_contents('php://input'). 
    "\n\nRequest\n----------\n". 
    print_r($_REQUEST, 1). 
    "\n\nFiles\n----------\n". 
    print_r($_FILES, 1). 
    "\n\nPost\n----------\n". 
    print_r($_POST, 1) 
); 

正如你所看到的,我看起來幾乎到處都是。所有這些導致空的讀數,但是,在readout.txt

我在做什麼錯?

回答

2

原來chunkedMode param(在options)是罪魁禍首。

如果這有助於任何人,禁用此和所有應該沒事。

options.chunkedMode = false; 

不知道如何解釋打開它的空請求的行爲,雖然。該參數存在以塊形式發送文件,以允許某種類型的進度反饋。

相關問題