jQuery发布文件形式,但服务器什么也没得到?

时间:2018-08-01 05:04:17

标签: javascript jquery django

我有一个页面需要单击一个按钮来发布文件,但是服务器什么也没得到???有人可以帮我吗?

<button class="btn btn-primary btn-sm" id="upload_item">上传</button>

$('#upload_item').click(function(event) {
  event.preventDefault();
  var form = $('<form action="." method="post" enctype="multipart/form-data" hidden> </form>').wrapInner(
    $('<input type="file" value="" name="uploadfile">').click()).appendTo('body').submit().remove();
});

2 个答案:

答案 0 :(得分:0)

您为什么不简单地这样做呢?如果表单被隐藏,用户将如何点击? 显然没有文件可以上传。

<form action="." method="post" enctype="multipart/form-data"> 
<input type="file" value="" name="uploadfile">
</form>

答案 1 :(得分:0)

在生成新的DOM时,请使用 $(document).on(); 而不是单击事件,从而可以处理新生成的DOM的事件。希望以下脚本可以为您工作。

$(document).on('click', '#upload_item', function(event) {
     event.preventDefault();
     var form = $('<form action="#" method="post" enctype="multipart/form-data" >  </form>').wrapInner(
                    $('<input type="file" value="" name="uploadfile" id="uploadfile">'
                    )).appendTo('body').hide();

     var fileHandler = $('#uploadfile');
     fileHandler.click();                    
     fileHandler.change(function(event) {
        $(this).val();
        console.log($(this).val()); // Just Checking file is populated or not 
        form.submit();
      });
});

和++(如果问题是在服务器端进行调试):

如何检查服务器以获取此表单的值? 您使用的是$ _POST还是$ _FILES?

在服务器端代码上尝试以下代码。 (这是用于php)

print_r($_FILES);

分析您得到的回应。您将收到这样的回复

 array (size=1)
  'uploadfile' => 
    array (size=5)
      'name' => string '' (length=0)
      'type' => string '' (length=0)
      'tmp_name' => string '' (length=0)
      'error' => int 4
      'size' => int 0

检查是哪个错误导致了此问题。 File Upload error Messages

希望这会有所帮助。