我有一个带拖放文件输入的表单,我最初在这里找到:
http://codepen.io/prasanjit/pen/NxjZMO
表格如下:
<form method="POST" action="{{ url('images/save') }}">
<div class="file-drop-area">
<span class="fake-btn">Choose file</span>
<span class="file-msg js-set-number">or drag and drop file here</span>
<input class="file-input" type="file" name="fileUpload">
</div>
<button>Save</button>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
JS与原来的笔没有变化:
$(document).ready(function () {
var $fileInput = $('.file-input');
var $droparea = $('.file-drop-area');
// highlight drag area
$fileInput.on('dragenter focus click', function() {
$droparea.addClass('is-active');
});
// back to normal state
$fileInput.on('dragleave blur drop', function() {
$droparea.removeClass('is-active');
});
// change inner text
$fileInput.on('change', function() {
var filesCount = $(this)[0].files.length;
var $textContainer = $(this).prev('.js-set-number');
if (filesCount === 1) {
// if single file then show file name
$textContainer.text($(this).val().split('\\').pop());
} else {
// otherwise show number of files
$textContainer.text(filesCount + ' files selected');
}
});
});
问题是,当我通过控制器传递它时,使用
时文件会显示为null$file = $request->file('fileUpload');
但是,使用时
$file = $request->get('fileUpload');
然后转储$ file,结果是get请求实际上是获取用户名。所以它会像“image01.jpg”那样转储。
此外,在向表单添加验证时,
$this->validate($request, [
'fileUpload' => 'required',
]);
表单只有在您附加文件后才会显示。
那是怎么回事?为什么在文件请求中它会变为空?
答案 0 :(得分:1)
<form method="POST" action="{{ url('images/save') }}" enctype="multipart/form-data">