Cordova FileTransfer发送文件但没有收到任何内容

时间:2017-08-17 12:19:31

标签: javascript android cordova file-transfer phonegap

我通过MediaCapture plugin将通过Cordova FileTransfer plugin录制的视频发送到远程服务器,但没有任何内容 - 文件或任何数据 - 都未到达服务器端。服务器接收请求,但似乎是空的。

根据科尔多瓦的说法,一切都很好。这是成功回调的读数:

enter image description here

这是我的JS :( [[1]] [1] 1 2 3 [[2]] [1] 4 5 6 是捕获的视频文件)

mediaFiles[0]

(注意,最后一个参数trustAllHosts设置为true,因为我的测试服务器是自签名的。)

科尔多瓦显然认为它已经发送了数据,但我的PHP脚本不同意。这是我的PHP:

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
);

正如你所看到的,我几乎无处不在。但是,所有这些都会导致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) ); 中的空读数。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

事实证明,chunkedMode paramoptions)是罪魁祸首。

如果这对其他人有帮助,请禁用此功能(默认情况下为true),一切正常。

options.chunkedMode = false;

不知道如何解释空请求的行为。该param用于以块的形式发送文件,以允许某种进度反馈。