具有单一功能的多个dropzone



我有一个带有多个Dropzone的表单用于上传图像。以下是我的代码:

HTML

<form>
    <input type="text">
    <div>
        <div>
            <div class="dropzone dropzone-previews" id="test-image1"></div>
            <div class="dropzone dropzone-previews" id="test-image2"></div>
        </div>
        <div>
            <div class="dropzone dropzone-previews" id="test-image3"></div>
            <div class="dropzone dropzone-previews" id="test-image4"></div>
        </div>
    </div>
</form>

JavaScript:

$(function () {
    Dropzone.options.testImage1 = {
        url: "test1.php",
        maxFiles : 10,
        paramName: "file1", 
        maxFilesize: 2,
    }
    Dropzone.options.testImage2 = {
        url: "test2.php",
        maxFiles : 20,
        paramName: "file2", 
        maxFilesize: 10,
    }
    Dropzone.options.testImage3 = {
        url: "test3.php",
        maxFiles : 30,
        paramName: "file3", 
        maxFilesize: 20,
    }
    Dropzone.options.testImage4 = {
        url: "test4.php",
        maxFiles : 40,
        paramName: "file4", 
        maxFilesize: 5,
    }       
});

现在,我为4个div提供了4个不同的Dropzone函数。这工作正常。

事实上,在我的项目中,有很多使用图片上传&我将在不同的页面上多次使用Dropzone。

我的问题是——我能写一个Dropzone函数吗;传递Id、maxFiles、paramName、maxFilesize&可能是其他的,这样我就不必写多个Dropzone函数了?

提前谢谢。

好吧,我不确定这是否是你想要的,但我想到的一件事是,你可以使用divs-id来设置选项,然后在javascript中使用该id来配置dropzone元素。

下面是一个使用jQuery:的问题中提到的参数的通用示例

html:

<div class="dropzone" id="image-1-10-1"></div>
<div class="dropzone" id="image-2-20-2"></div>
<div class="dropzone" id="image-3-30-3"></div>
<div class="dropzone" id="image-4-40-4"></div>

js:

Dropzone.autoDiscover = false;
$('.dropzone').each(function(){
    var options = $(this).attr('id').split('-');
    var dropUrl = 'test' + options[1] + '.php';
    var dropMaxFiles = parseInt(options[2]);
    var dropParamName = 'file' + options[1];
    var dropMaxFileSize = parseInt(options[3]);
    $(this).dropzone({
        url: dropUrl,
        maxFiles: dropMaxFiles,
        paramName: dropParamName,
        maxFilesSize: dropMaxFileSize
        // Rest of the configuration equal to all dropzones
    });
});

最新更新