你如何启用Dropzone选项?autoDiscover打破Dropzone功能.

Jos*_*rer 8 html javascript dropzone.js

所以,我试着在这里解决这个问题:

Dropzone图片上传选项不起作用:(

但是,每当我提供选项时:

        Dropzone.autoDiscover = false;
Run Code Online (Sandbox Code Playgroud)

dropzone从显示默认的drag'n'drop外观变为仅带有"Browse"按钮的文本.

这是我的代码(dropzone包含在标题中):

<script type="text/javascript">
        $(document).ready(function () {

            Dropzone.autoDiscover = false;
            $("#uploadme").dropzone({
                maxFilesize: 5000,
                dictDefaultMessage: "Drop your file here to upload (multiple files require being zipped)",
                uploadMultiple: false,
                addRemoveLinks: true
            });

        });
    </script>

    <h5>Test space for FTP</h5>
    <asp:Label ID="lblError" runat="server"></asp:Label>

    <div class="mainContent">
        <form runat="server" method="post" enctype="multipart/form-data"
            class="dropzone"
            id="ftpUpload">
            <div class="fallback" id="uploadme">
                <input type="file" name="file" multiple />
                <input type="submit" value="Upload" />
            </div>
        </form>
    </div>
Run Code Online (Sandbox Code Playgroud)

所以,问题是,如何在不破坏默认外观的情况下为dropzone指定选项?

小智 7

祝你好运

@{
}

<div id="dropzone">
    <form action="/Photo/Upload" class="dropzone" id="uploader" enctype="multipart/form-data"></form>
</div>

@section Styles{
    <link rel="stylesheet" type="text/css" href="~/lib/dropzone/dist/basic.css" />
    <link rel="stylesheet" type="text/css" href="~/lib/dropzone/dist/dropzone.css" />

}
@section Scripts{
    <script src="~/lib/dropzone/dist/dropzone.js"></script>

    <script>
        Dropzone.autoDiscover = false;
        window.onload = function () {

            var dropzoneOptions = {
                dictDefaultMessage: 'Drop Here!',
                paramName: "file",
                maxFilesize: 2, // MB
                addRemoveLinks: true,
                init: function () {
                    this.on("success", function (file) {
                        console.log("success > " + file.name);
                    });
                }
            };
            var uploader = document.querySelector('#uploader');
            var newDropzone = new Dropzone(uploader, dropzoneOptions);

            console.log("Loaded");
        };
    </script>
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*ody 6

四个选项:

  1. 不要.dropzone在你的表单中使用 class ,这样自动发现就不会选择它。如果你想使用默认的 CSS,那会让你一团糟
  2. 用 Dropzone.autoDiscover = false;
  3. 加载后通过设置 Dropzone.options.${formname} 访问选项,其中 formname 是表单的驼峰式 ID。
  4. 通过附加到元素的 dropzone 属性访问加载后的选项。
    document.querySelector(formname).dropzone.options
  5. 您可以通过索引访问它: Dropzone.instances[0].options

如果您使用后面的步骤(正如他们的网站所推荐的那样),您还可以设置元素上的 URL 等选项,并通过以下方式合并选项:

let dz = document.querySelector(formname).dropzone
dz.options = { ...dz.options, ...{ myopts } }
Run Code Online (Sandbox Code Playgroud)


Jos*_*rer 3

I figured it out myself. I'm fairly new to ASP.NET Web Forms and forgot that Javascript is client-side and therefore references element IDs which are different on the client-side than server-side. I viewed the source and found that the form's ID is "aspnetForm", so I changed my options code to:

Dropzone.options.aspnetForm = {
            uploadMultiple: false,
            maxFiles: 1,
            maxFilesize: 5000,
Run Code Online (Sandbox Code Playgroud)

etc.

Now it works!