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

标签 javascript android cordova file-transfer phonegap

我正在发送通过 Cordova 的 MediaCapture plugin 录制的视频通过 FileTransfer plugin 到远程服务器,但是没有任何东西(无论是文件还是任何数据)到达服务器端。服务器收到请求,但好像是空的。

根据 Cordova 的说法,一切都很顺利。这是成功回调的读数:

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

(请注意最后一个参数 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)
);

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

我做错了什么?

最佳答案

结果是chunkedMode param (在选项中)是罪魁祸首。

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

options.chunkedMode = false;

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

关于javascript - Cordova FileTransfer 发送文件但未收到任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45734955/

相关文章:

android - 为什么渐进式依赖依赖关系不好?

android - 库 com.google.android.gms :play-services-base is being requested by various other libraries at [[15. 0.1,15.0.1]],但解析为 16.0.1

javascript - 关于Jquery库的一些问题

javascript - 函数未在 javascript 中定义

javascript - 如何在cocos creator javascript中使用sqlite数据库

javascript - 从页面移动到另一个页面时,数据从 Sqlite 数据库中删除

javascript - 在ubuntu中为ionic设置环境变量

Java Eclipse PhoneGap。无法设置插件?

javascript - 如何在node.js + ajax中向用户发送自定义错误消息

php - 奇怪的字符而不是撇号出现在 url 变量 (GET) 中