代码之家  ›  专栏  ›  技术社区  ›  Aiden Bell

jqueryForm和空上传

  •  4
  • Aiden Bell  · 技术社区  · 16 年前

    在这个问题上我绞尽脑汁太久了:使用jquery.form( http://malsup.com/jquery/form $_FILES['someimage'] 设置,但错误号始终为 UPLOAD_ERR_NO_FILE ,大小也为0。

    JavaScript:

    $('form input[type=file]').change(function () {
        $(this).clone().appendTo('#imgform');
        $('#imgform').ajaxForm();
        $('#imgform').ajaxSubmit({
            type: 'POST'
        });
    });
    

    附属于:

    <form id="imgform" method="POST" action="/api/images.php" enctype="multipart/form-data"></form>
    

    来自另一个具有bog标准文件输入的窗体。

    var_dump ing$\文件总是显示索引设置为表单元素的名称。。。但没有数据。

    (抱歉,我知道类似jQuery的问题在这些部分太常见了)。

    编辑 我发现 Clone a file input element in Javascript 其中包含进一步的信息和建议的替代方案。

    Head form -> File upload form -> tail form

    然后我可以异步上传文件,当单击tail的submit时,将表单粘合到一个post中,因为它们只是文本字段。

    2 回复  |  直到 9 年前
        1
  •  2
  •   BradBrening    16 年前

    $('form input[type=file]') 永远找不到要克隆的元素。

    不过,最大的问题可能在于浏览器处理文件上传控件的方式。您不能以编程方式在文件输入控件上设置值—否则,作为web开发人员,自动将文件上载值设置为“c:\Files\MyPasswordFile.txt”并以不可见的方式自动将表单提交给用户是很简单的。

    当我把你的代码改成:

    <input type="file" name="imageFile" />
    <form id="imgform" method="POST" action="/api/images.php" enctype="multipart/form-data">
    
    </form>
    
    <script>
      $('input[type=file]').change(function() {
        alert("ACTION");
        $(this).clone().appendTo('#imgform');
        //$('#imgform').ajaxForm();
        //$('#imgform').ajaxSubmit(
        //        {
        //          type: 'POST'
        //        }
        //    );
      }); 
    </script>
    

        2
  •  0
  •   Tom Tom    16 年前

    不能使用ajax发布文件,因为javascript出于安全原因无法访问任何本地硬盘驱动器。

    有一些方法可以使用iframe模拟ajax发布。这个链接就是一个很好的例子。

    http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html

    推荐文章