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

Utk*_*nos 2 javascript android file-transfer cordova phonegap

我正在通过FileTransfer 插件将通过 Cordova 的MediaCapture 插件录制的视频发送到远程服务器,但没有任何东西——文件或任何数据——都没有到达服务器端。服务器收到请求,但是好像是空的。

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

在此处输入图片说明

这是我的 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
);
Run Code Online (Sandbox Code Playgroud)

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

Cordova 显然认为它发送了数据,但我的 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)
);
Run Code Online (Sandbox Code Playgroud)

如您所见,我几乎到处寻找。然而,所有这些都会导致读数为空readout.txt

我究竟做错了什么?

Utk*_*nos 5

原来chunkedMode参数(in options) 是罪魁祸首。

如果这对其他人有帮助,请禁用它(默认情况下是这样),一切都应该没问题。

options.chunkedMode = false;
Run Code Online (Sandbox Code Playgroud)

不过,不确定如何解释空请求打开时的行为。存在参数以分块发送文件,以允许某种进度反馈。