Cordova FileTransfer 发送文件但未收到任何文件
Cordova FileTransfer sends file but nothing received
我正在发送通过 Cordova 的 MediaCapture plugin to a remote server via the FileTransfer plugin 录制的视频,但没有任何内容 - 无论是文件还是任何数据 - 都没有到达服务器端。服务器收到请求,但是好像是空的
根据 Cordova 的说法,一切顺利。这是成功回调的读数:
这是我的 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
中)是罪魁祸首。
如果这对其他人有帮助,请禁用它(默认情况下为真),一切都应该没问题。
options.chunkedMode = false;
不过不确定如何解释空请求打开时的行为。该参数的存在是为了以块的形式发送文件,以允许某种进度反馈。
我正在发送通过 Cordova 的 MediaCapture plugin to a remote server via the FileTransfer plugin 录制的视频,但没有任何内容 - 无论是文件还是任何数据 - 都没有到达服务器端。服务器收到请求,但是好像是空的
根据 Cordova 的说法,一切顺利。这是成功回调的读数:
这是我的 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
中)是罪魁祸首。
如果这对其他人有帮助,请禁用它(默认情况下为真),一切都应该没问题。
options.chunkedMode = false;
不过不确定如何解释空请求打开时的行为。该参数的存在是为了以块的形式发送文件,以允许某种进度反馈。