使用cordove captureimage到设备文件名时,媒体文件中的本地映像文件路径不同

时间:2017-10-03 07:28:18

标签: javascript cordova

我已经开始出现此问题,并以此格式创建设备文件名:

.../DCIM/Camera/IMG_20170819_155509.jpg

但使用Cordova captureImage时的媒体文件数据返回为:

.../DCIM/Camera/1503140105277.jpg

因此无法返回图像。

以下是代码:

$('body').off('click', '#add-image-inspect-attr-list').on('click', '#add-image-inspect-attr-list', function(event) {                
            var options = { limit: 1 };
            navigator.device.capture.captureImage(inspectAttrPictureSuccess, inspectPictureError, options);
            $(this).off();
        });

function inspectAttrPictureSuccess(imageData) {

console.log(imageData);
var countOfImg = $('.image-display-inspect-attr-list').children().length;
var file = {
    ContentType: "image/jpeg",
    base64: imageData,
    Data: imageData,
    ID: countOfImg
};

var fileName = file.base64;
inspectShowAttrFile(fileName,0);
}

function inspectShowAttrFile(fileName, type) {

var countOfImg = $('.image-display-inspect-list').children().length;
$('.image-display-inspect-list').append('<img id="inspect-img-index-' + countOfImg + '" class="img-responsive img-thumbnail img-inspect" src="' + fileName[0].fullPath + '">');
}

该应用程序使用cordova 6.3.1构建,并且该设备具有andriod 4.4.2

这适用于某些设备但不适用于其他设备

1 个答案:

答案 0 :(得分:0)

要解决此问题,我必须检查添加的最后一个文件到图像文件位置的内容。获取文件夹路径,获取最新文件,然后使用新文件名和位置数据更新captureImage函数创建的图像数据:

function inspectAttrPictureSuccess(imageData) {


var deviceImageFolder = imageData[0].localURL.replace(imageData[0].name, '');

window.resolveLocalFileSystemURL(deviceImageFolder, function (dirEntry) {
    var directoryReader = dirEntry.createReader();
    directoryReader.readEntries(successfile, failfile);
}, function (err) {
    var errToSave = err.message;
});

function successfile(entries) {
    var latestimage = entries[entries.length - 1];

    imageData[0].fullPath = latestimage.fullPath
    imageData[0].localURL = latestimage.nativeURL
    imageData[0].name = latestimage.name

    var countOfImg = $('.image-display-inspect-attr-list').children().length;
    var file = {
        Filename: "inspect-attr-img-" + Math.random().toString(36).substring(2, 15) + ".jpg",
        ContentType: "image/jpeg",
        base64: imageData,
        Data: imageData,
        ID: countOfImg
    };

    inspectImageAttrFileSendAry.push(file);
    inspectImageFileSendALLAry.push(file);
    console.log(inspectImageAttrFileSendAry);
    console.log(inspectImageFileSendALLAry);
    var fileName = file.base64;
    inspectShowAttrFile(fileName, 0);

}
function failfile(error) {
    console.log("Failed to list directory contents: ", error);
}

}