在cordova for file中遇到了filetransfer上传的问题...
我想上传任何类型的文件..意味着图片,视频,声音......
问题是,我不知道如何获取文件的类型/结尾(例如.jpg),因为使用options.fileName = imageURI.substr(imageURI.lastIndexOf('/')+ 1 );我只得到位置,但没有给定类型/结尾的文件名.. 我当然可以添加+“.jpg”,但这对于除图像之外的所有其他文件都没有帮助。 这是当我从照相馆选择一个文件时...当我从SD卡中选择一个文件时没有任何反应 - >必须是目的地uri的问题
这是我的代码:
navigator.camera.getPicture(uploadPhotoorfile, function(message) {
}, { quality: 50,
destinationType: navigator.camera.DestinationType.FILE_URI,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,
mediaType: navigator.camera.MediaType.ALLMEDIA
});
function uploadPhotoorfile(imageURI) {
var options = new FileUploadOptions();
options.headers = {
Connection: "close"
};
var options = new FileUploadOptions();
options.chunkedMode = false;
options.fileKey="file";
options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);
var params = new Object();
options.params = params;
var ft = new FileTransfer();
ft.upload(imageURI, encodeURI("https://domain....com/doupload.php"), win, fail, options, true);
}
function win(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
alert("Success");
}
function fail(error) {
alert("Failed" + error.code);
}
答案 0 :(得分:0)
在PHP代码中,确保将MIME类型作为标题
返回<?php
// open the file in a binary mode
$name = './images/xyz.png';
$fp = fopen($name, 'rb');
// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
// dump the picture and stop the script
fpassthru($fp);
exit;
?>
如果客户端需要扩展名为.jpeg,请将您的URL设为'https://domain....com/myfile.jpg
,然后在服务器上执行URL重写,将URL映射到您的PHP页面。