我想使用nativescript-background-http插件在服务器上上传音频文件。移动端工作正常。没有运行时错误。日志显示完整上传,但是当我访问服务器上的目录时,没有文件上传。
这是我在nativescript上的代码
var session = bghttp.session("image-upload");
var audioFolder = fs.knownFolders.documents().getFolder("audio");
var recordedFile = audioFolder.getFile("recording.mp3");
var request = {
url: "http://talktext.me/talktext.me(app)/recAudio.php",
method: "POST",
headers: {
"Content-Type": "application/octet-stream",
"File-Name": "recording.mp3"
},
description: "{ 'uploading': '" + "recording.mp3" + "' }"
};
alert(recordedFile.path);
let params = [
{ name: "test", value: recordedFile.path },
{ name: "fileToUpload", filename: recordedFile.path, mimeType: 'audio/mpeg' }
];
var task = session.multipartUpload(params, request);
task.on("progress", logEvent);
task.on("error", logEvent);
task.on("complete", logEvent);
function logEvent(e) {
console.log("UPLOAD STATUS: "+e.eventName);
}
这是我在recAudio.php上的代码
$all_headers = apache_request_headers();
$newimg = file_put_contents('uploads/' . $all_headers['File-Name'],
file_get_contents('php://input'));
移动设备上的所有内容都可以正常运行。但是没有文件上传到服务器上。
答案 0 :(得分:0)
我不是PHP专家,但是很久以前我就从事此工作。看来php://input
不能用于分段上传。
答案 1 :(得分:0)
确保服务器的 .htaccess 文件中的应用程序可以使用标头
RewriteCond %{HTTP:File-Name} .
RewriteRule .* - [E=HTTP_FILENAME:%{HTTP:File-Name}]
使用方式
file_put_contents('uploads/' . $_SERVER['HTTP_FILENAME'],file_get_contents('php://input'));