【问题标题】:Allow Dropzone js to upload only zip files允许 Dropzone js 仅上传 zip 文件
【发布时间】:2019-01-26 16:41:12
【问题描述】:

在我的 mvc net core 应用程序中,我需要实现拖放文件上传器。我找到了 Dropzone js,并希望将它用于我的目的。但无法配置它,我需要允许它上传任何 zip 文件。 我的代码:

<div class="row">
    <div class="col-md-9">
        <div id="dropzone">
            <form action="/Home/Upload" class="dropzone needsclick dz-clickable" id="uploader">
                <div class="dz-message needsclick">
                    Drop files here or click to upload.<br>
                </div>
            </form>
        </div>
    </div>
</div>


<script>
    $(document).ready(function () {

        Dropzone.options.uploader = {
            paramName: "file",
            maxFilesize: 256,
            acceptedFiles: "application/zip,application/octet-stream,application/x-zip-compressed,multipart/x-zip,.zip",
            maxFiles: 1
        };

});
</script>

当然我也有控制器:

[HttpPost]
    public async Task<IActionResult> Upload(IFormFile file)
    {
        var uploads = Path.Combine(_environment.ContentRootPath, "Uploads");
        if (file.Length > 0)
        {
            using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create))
            {
                await file.CopyToAsync(fileStream);
            }
        }
        return RedirectToAction("Index");
    }

但是,应用程序仍然允许上传任何 MIME 类型的文件。哪里有问题? maxFiles 的限制也不起作用 - 它允许我上传无限数量的文件。

【问题讨论】:

标签: asp.net-mvc asp.net-core dropzone.js


【解决方案1】:

您可以使用 dropzone.js 名称接受文件的选项。

Dropzone.options.myAwesomeDropzone = {
 ....
acceptedFiles: ".zip",
....
};

【讨论】:

    【解决方案2】:

    根据文档 (https://www.dropzonejs.com/#configuration),您可以这样做:

    Dropzone.options.myAwesomeDropzone = {
      accept: function(file, done) {
        if (file.name.endsWith !== ".zip") {
          done("Naha, you don't.");
        }
        else { done(); }
      }
    };
    

    获取文件和完成函数作为参数的函数。如果 done 函数在没有参数的情况下被调用,文件被“接受”并且 将被处理。如果您传递错误消息,则文件被拒绝, 并且将显示错误消息。这个功能不会 如果文件太大或与 mime 类型不匹配,则调用。

    编辑: 这是一个演示它的小提琴:http://jsfiddle.net/behyzjng/15/

    【讨论】:

    • 不,这仍然是上传所有内容:(
    • 我真的不知道如何在visual studio(oopsie)中调试JS,所以我只能调试后端(控制器主页/上传方法)..我可以调试这部分代码?抱歉这类问题
    • 在浏览器中。按 f12,进入你的 js 文件,设置断点就可以了。
    • 我按照你写的做,它永远不会在我的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2018-08-22
    • 1970-01-01
    • 2012-01-03
    • 2015-11-14
    • 2016-06-15
    相关资源
    最近更新 更多