通过 cordova-plugin-camera 方法navigator.camera.getPicture()
从我的设备文件系统中选择视频文件后,该函数返回类似'content://media/external/video/media/7319'
(android)的URI。
必须通过 cordova-plugin-file-transfers 功能' upload()
'将其转换为文件上传文件路径。 (仅接受本机路径或数据:URI)。数据:URI是没有选项,因为我们必须传输相当大的文件(5MB +),转换为base64需要太长时间。
根据开发人员的说法,最近issue会阻止解析操作。
还有其他方法可以同时适用于android / ios吗?或者我是否必须放弃cordova-plugin-file-transfer以获取其他上传方法?
答案 0 :(得分:0)
有点晚了,但您可以使用cordova-plugin-file中建议的Cordova documentation代替 cordova-plugin-filepath :
navigator.camera.getPicture(function cameraSuccess(imgUri) {
uploadPicture(imgUri);
}, function cameraError(error) {
console.debug("Unable to obtain picture: " + error, "app");
});
function uploadPicture(imgUri) {
var uploadUrl = ...;
var success = ...;
var fail = ...;
var options = ...;
var fileEntry = getFileEntry(imgUri);
var fileTransfer = new FileTransfer();
fileTransfer.upload(fileEntry.toURL(), encodeURI(uploadUrl), success, fail, options);
}
function getFileEntry(imgUri) {
window.resolveLocalFileSystemURL(imgUri, function success(fileEntry) {
return fileEntry;
}, function () {
// If don't get the FileEntry (which may happen when testing
// on some emulators), copy to a new FileEntry.
return createNewFileEntry(imgUri);
});
}
function createNewFileEntry(imgUri) {
window.resolveLocalFileSystemURL(cordova.file.cacheDirectory, function success(dirEntry) {
// JPEG file
dirEntry.getFile("tempFile.jpeg", { create: true, exclusive: false }, function (fileEntry) {
return fileEntry;
}, onErrorCreateFile);
}, onErrorResolveUrl);
}
注意:未经测试......