jQuery文件上载 - 同一页面上的多个表单

问题描述 投票:0回答:1

我正在尝试将多个jQuery文件上载表单实现​​到页面,但文档不清楚。

我已经尝试过StackOverflow和Google的许多建议和攻击,但很多都是旧的(6年以上)并且似乎与当前版本无关。以下是我看过的一些主题:

重复文档

Multiple File Upload Widgets on the same page - main.js

对于不同版本或非常旧版本(或三者的组合)没有回答

Two jQuery File Upload widgets on the same page

jQuery File Upload - Multiple File Upload Widgets on the same page

Multiple jQuery File Upload widgets on the same page

blueimp jQuery File Upload Multiple Instance

文档在这里,似乎已经过时了

https://github.com/blueimp/jQuery-File-Upload/wiki/Multiple-File-Upload-Widgets-on-the-same-page

在main.js中它建议替换:

$('#fileupload').fileupload();

附:

    $('.fileupload').each(function () {
        $(this).fileupload({
            dropZone: $(this)
        });
    });

并修改表单以进行更改:

id="fileupload"

至:

class="fileupload"

但是如果你查看当前的main.js文件,它建议替换的行不存在:https://github.com/blueimp/jQuery-File-Upload/blob/master/js/main.js

这是我当前的(无工作)代码:

形成:

    <form class="fileupload" action="upload.cgi" method="POST" enctype="multipart/form-data">

main.js:

$('.fileupload').each(function () {
  $(this).fileupload({
      dropZone: $(this)
  })
});
    'use strict';

    // Initialize the jQuery File Upload widget:
    $('#fileupload').fileupload({
        // Uncomment the following to send cross-domain cookies:
        //xhrFields: {withCredentials: true},
        url: '/upload.cgi'
    });

    // Enable iframe cross-domain access via redirect option:
    $('#fileupload').fileupload(
        'option',
        'redirect',
        window.location.href.replace(
            /\/[^\/]*$/,
            '/cors/result.html?%s'
        )
    );

我已经替换了第14,18和25行的组合,尝试了许多我能想到的方法,但它要么不起作用,要么不起作用并产生错误,通常是TypeError:document.getElementById(.. 。)为null或找不到[object Object]。

我不是Javascript或jQuery的专家,这就是为什么我试图首先使用这个插件。有人可以解释一下main.js实际上应该如何处理多个表单,因为文档已经过时(2012)或者我对它们的理解存在缺陷。谢谢。

jquery file file-upload upload blueimp
1个回答
0
投票

你的javascript有点乱,我不完全确定你要完成什么;)但如果你试图为多个表单初始化filesupload插件,那么我想这就是你要找的:

$(".fileupload").each(function() {
  $(this).fileupload({
    dropZone: $(this)
  });
});
.fileupload {
  border: 5px dashed red;
  display: inline-block;
  width: 50px;
  height: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.2/jquery.fileupload.min.js"></script>

<form class="fileupload" action="upload.cgi" method="POST" enctype="multipart/form-data"></form>
<form class="fileupload" action="upload.cgi" method="POST" enctype="multipart/form-data"></form>

编辑:

我的困惑源于我需要应用此代码以启用多个表单的位置。

如果可能,我建议在正文标记中包含您的javascript。首先是dependancies(jquery,jquery-ui和fileupload),然后是你自己的脚本(在这种情况下是main.js)。这是应该实现多表单文件上载的地方。我希望下面的例子可以帮助你理解这个想法:

page.html中

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="main.css">
  </head>
  <body>
    <form class="fileupload" action="upload.cgi" method="POST" enctype="multipart/form-data"></form>
    <form class="fileupload" action="upload.cgi" method="POST" enctype="multipart/form-data"></form>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-file-upload/9.5.2/jquery.fileupload.min.js"></script>
    <script src="main.js"></script>
  </body>
</html>

main.js

$(".fileupload").each(function() {
  $(this).fileupload({
    dropZone: $(this)
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.