2

phonegap / cordovaを使用してアルバムから複数の写真を選択できるかどうか誰かが知っていますか?

ドキュメントを使用して1つの写真を選択するアプリを作成するのはかなり簡単ですが、複数の写真を選択する方法はドキュメント化されていません???

多分私はそれのためにいくつかのプラグインが必要ですか(iOS / Android)?または回避策?この問題は私にとって本当にショーストッパーなので、これに対するまともな解決策は素晴らしいでしょう。

4

2 に答える 2

3

現在、この機能はコアAPIでは使用できません。ただし、拡張リクエストが開いています。この時点での最善の策は、プラグインを作成することです。

于 2012-11-04T17:43:12.423 に答える
3

複数選択するために、すべてのディレクトリを再帰的に繰り返して画像を見つけるファイルプラグインを利用しました。隠しファイルを無視します

var numDirs = 0;
var numFiles = 0;
var ImageFilePath = new Array();

function GetAllImageFromSD() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);

}

function onFileSystemSuccess(fileSystem) {
    fileSystem.root.getDirectory("/sdcard", { create: false, exclusive: false }, getDirSuccess, fail);
}

function getDirSuccess(dirEntry) {
    var directoryReader = dirEntry.createReader();

    // Get a list of all the entries in the directory
    directoryReader.readEntries(readerSuccess, fail);
}


var readerTimeout = null, millisecondsBetweenReadSuccess = 1000;

function readerSuccess(entries) {
    String.prototype.startsWith = function (str)
    { return (this.match("^" + str) == str) }

    var i = 0, len = entries.length;
    for (; i < len; i++) {
        if (entries[i].isFile) {
            if ((entries[i].name.indexOf(".jpeg") != -1) || (entries[i].name.indexOf(".png") != -1) || (entries[i].name.indexOf(".jpg") != -1)) {
                var fileName = entries[i].name;
                if (!fileName.startsWith(".")) {
                    numFiles++;
                    ImageFilePath.push(entries[i].fullPath)
                    //  console.log("file "+entries[i].fullPath)
                }
            }

        } else if (entries[i].isDirectory) {
            numDirs++;
            // console.log("directory "+entries[i].name)
            var dirName = entries[i].name;
            if (!dirName.startsWith(".")) {
                getDirSuccess(entries[i]);
            }
        }
        if (readerTimeout) {
            window.clearTimeout(readerTimeout);
        }
    }
    if (readerTimeout) {
        window.clearTimeout(readerTimeout);
    }
    readerTimeout = window.setTimeout(weAreDone, millisecondsBetweenReadSuccess);
}

function weAreDone() {

console.log("numDirs " + numDirs);
console.log("numFiles " + numFiles);

var a = "";

var GalleryImageTag = "";
GalleryImageTag = "<div class='spacingbox'></div> ";

for (var j = 0; j < ImageFilePath.length; j++) {
    GalleryImageTag += "<div class='divgallery divcolor'>"
    var ChkId = "chk" + j;
    GalleryImageTag += "<img class='imggallery' id='" + j + "' src=' " + ImageFilePath[j] + "'alt=''/>";
    GalleryImageTag += "<input id='" + ChkId + "' name='" + ChkId + "' type='checkbox' value='" + ImageFilePath[j] + "' class='allignchk'>";
    GalleryImageTag += "</div>";

}
$('#ImageContainer').html('');
$('#ImageContainer').append(GalleryImageTag);
$('#GalleryView').popup("open");
numDirs = 0;
numFiles = 0;

ImageFilePath = [];
console.log(GalleryImageTag);
}

画像がたくさんある場合、このコードは完了するまでに時間がかかることがあります。

于 2014-01-25T14:40:36.540 に答える