[英]cordova-plugin-filepath: unable to resolve URI as file path
通過cordova-plugin-camera的方法navigator.camera.getPicture()
從我的設備文件系統中選擇一個視頻文件后,該函數將返回一個URI,例如'content://media/external/video/media/7319'
(android)。
必須通過cordova-plugin-file-transfers函數' upload()
'(僅接受本機路徑或data:URI)將其轉換為文件上傳路徑。 data:URI是沒有選擇的,因為我們必須傳輸相當大的文件(5MB +),而將其轉換為base64會花費太長時間。
根據開發人員的說法,最近有一個問題阻止解決操作。
還有其他兩種方法都可以在android / ios上使用嗎? 還是我不得不放棄cordova-plugin-file-transfer的另一種上傳方法?
有點晚了,但是您可以按照Cordova文檔中的建議使用cordova-plugin-file而不是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);
}
注意:未經測試...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.