【问题标题】:Cordova FileTransfer sends file but nothing receivedCordova FileTransfer 发送文件但未收到任何内容
【发布时间】:2018-01-25 20:37:58
【问题描述】:

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

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

这是我的 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 中的读数为空。

我做错了什么?

【问题讨论】:

    标签: javascript android cordova file-transfer phonegap


    【解决方案1】:

    原来chunkedMode paramoptions)是罪魁祸首。

    如果这对其他人有帮助,请禁用它(默认情况下是这样),一切都会好起来的。

    options.chunkedMode = false;
    

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

    【讨论】:

    • 你拯救了我的一天。我尝试不同的事情超过 2 个小时,然后找到了这个解决方案。有用。谢谢。
    • 很高兴它帮助了某人。
    • 遗憾的是,几年后这并不能解决我遇到的完全相同的问题。 :(
    • @Pixelknight1398 我认为这不是几年;上述评论者(Rajesh)说这是他上周的解决方案:)
    • @Mitya 你说得对,我没有注意到这一点。无论哪种方式,我都在使用 Ionic,它的方法与单独的 cordova 不同。 chunkedMode 现在已弃用,但 Ionic 仍然坚持使用过时的插件。即使在修改了我的 php.ini 之后,我似乎也无法为我找到解决此问题的方法。你最终是如何找到这个解决方案的?也许它会让我走上找到我的正确道路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多