Javascript 输入文件上载多个不在移动设备上工作的文件

Javascript 输入文件上载多个不在移动设备上工作的文件,javascript,file-upload,Javascript,File Upload,我有一个通用的文件加载程序,如下所示: <span class="input-group-btn"> <span class="btn btn-default btn-fill btn-file"> Browse<input type="file" id="fileInputs" multiple accept="image/*" onclick="resetprogresss()"> </span> </sp

我有一个通用的文件加载程序,如下所示:

<span class="input-group-btn">
    <span class="btn btn-default btn-fill btn-file">
        Browse<input type="file" id="fileInputs" multiple accept="image/*" onclick="resetprogresss()">
    </span>
</span>

我用这个上传文件。如果您有任何建议,我们将不胜感激。

这取决于您在手机上选择的选择方法,但是,我的本机图库和文件管理器在我的手机上工作正常,只需点击并按住您要上载的文件,它将切换到多选模式:


请注意,有许多jQuery插件可以上传文件,如,因此不必使用纯html输入标记。

我可以使用ctrl键选择多个文件,你打算如何在移动设备上执行此操作?@ProllyGeek我不确定这是我想要了解的。我想从手机中选择多个文件,我已经创建了Web API方法,jQuery上传到Web API,但我无法从手机库中选择多个文件用于上传。@Jacquer Bronkhorst当我尝试您的代码时,我只能按ctrl+多个文件选择文件!还有其他我不知道的行为吗?@ProllyGeek是的,用你的移动设备转到那个URL。并尝试上传多个文件没有js解决方案会改变多个文件的实际选择方式;他们都依赖于当地人的行为。有鉴于此,我会尽可能让这个过程更直观,即使是为了“超级用户”而额外点击几下。
var Filenames;

function generateUUID() {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
};

var MainPath = generateUUID();
var Names = [];

function UploadFiles() {
    var SetDir = MainPath;
    var fileInputs = document.getElementById("fileInputs");
    if ('files' in fileInputs) {
        if (fileInputs.files.length == 0) {
            alert("Please select a file");
            return;
        } else {
            var file = fileInputs.files[0];
            var ar = $("#AutoResumeBoxs").is(":checked");
            var chunksize = 20000;
            var name = SetDir;

            /*
            Arguments:
                username            name used to create subfolders on the server.
                files               files object from the file input tag.
                uploadStartFunction function that receives a file object just before uploading.
                progressFunction    function that accepts a percent-complete integer value.
                doneFunction        function called when file is uploaded.
                errorFunction       function called when an error occurs.
                chunkSize           size in bytes of each chunk uploaded.
                autoResume          bool to control auto resuming.
            */
            CFUpload(name, fileInputs.files, uploadStarts, progresss, dones, errors, chunksize, ar);
        }
    }
}

function uploadStarts(thisfile) {
    Names.push(thisfile.name);


}

function progresss(percent) {

    var p = percent + "%";
    $("#lblUPs").text(p);
    $("#progressbars").width(p);
    $("#progressbars").attr("data-appear-progress-animation", p);
    $("#ProgressTabs").text(p);
}

function resetprogresss() {
    progresss(0);
}

function dones() {


}

function errors(data) {

}

function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
    document.cookie = c_name + "=" + c_value;
}

function getCookie(c_name) {
    var c_value = document.cookie;
    var c_start = c_value.indexOf(" " + c_name + "=");
    if (c_start == -1) {
        c_start = c_value.indexOf(c_name + "=");
    }
    if (c_start == -1) {
        c_value = null;
    }
    else {
        c_start = c_value.indexOf("=", c_start) + 1;
        var c_end = c_value.indexOf(";", c_start);
        if (c_end == -1) {
            c_end = c_value.length;
        }
        c_value = unescape(c_value.substring(c_start, c_end));
    }
    return c_value;
}

$(document).ready(function () {
    $("#urls").hide();
    document.getElementById("saveme").disabled = true;

    var username = getCookie("username");
});