使用 dropzone.js 通过 ASP.NET 服务上传文件 OnClick

Using dropzone.js to upload files OnClick with ASP.NET Service

大家好,先谢谢大家。

基本上,我想在我的页面上添加一个 Dropzone.js 上传框,允许我将文件拖放到拖放区,然后单击一个按钮使用后端将其上传到文件夹 API。错误是 JS 的客户端,我只是在寻求有关如何以 better/working 方式处理此问题的帮助。

我的html:

<form action="#" class="dropzone">
  <div class="fallback">
     <input id="fileUpload" type="file" name="file" multiple onchange="setFileInfo(this.files)" />
  </div>
</form>
<button id="btnUploadFile" type="button"></button>

我的 JS:

$('#btnUploadFile').on('click', function () {

var data = new FormData($('form')[0]);
var files = $("#fileUpload").get(0).files;

// Add the uploaded image content to the form data collection
if (files.length > 0) {
    for (i = 0; i < files.length; i++) {
        data.append("UploadedImage" + i, files[i]);
    }
}

console.log(data)

// Make Ajax request with the contentType = false, and procesDate = false
var ajaxRequest = $.ajax({
    type: "POST",
    url: "api/fileupload/uploadfile",
    enctype: 'multipart/form-data',
    contentType: false,
    processData: false,
    data: data
});

ajaxRequest.done(function (xhr, textStatus) {
    // Do other operation
    console.log(textStatus)
    console.log(xhr)
});

Dropzone.autoDiscover = false;

var myDropzone = new Dropzone(element, {
    url: "#",
    autoProcessQueue: false
});

我的错误:

Uncaught TypeError: Cannot read property 'files' of undefined
at HTMLButtonElement.<anonymous> (core.js:1064)
at HTMLButtonElement.dispatch (jquery.js:5206)
at HTMLButtonElement.elemData.handle (jquery.js:5014)

我希望这足够详细。非常感谢。

看这里DropZone Doc, Usage without JS。 当 JS 可用时,div 中的内容将被 dropzone.js 删除。这意味着,在 dropzone.js 中的 JS 在页面加载时执行后,没有 fileUpload-Input 可用。相反,dropzone 将创建自己的 .当您在浏览器中查看 HTML 时,您可以看到它。

因为回退只有在没有javascript的情况下才可用,所以也没有办法用JS发送你的表单内容。您能解释一下为什么不使用表单操作上传数据吗?也许我可以帮助您解决这个问题。