我有一个页面需要单击一个按钮来发布文件,但是服务器什么也没得到???有人可以帮我吗?
<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();
});
答案 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
希望这会有所帮助。