在Laravel中删除文件上传为null

时间:2016-10-21 05:17:27

标签: php laravel

我有一个带拖放文件输入的表单,我最初在这里找到:

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',
        ]); 

表单只有在您附加文件后才会显示。

那是怎么回事?为什么在文件请求中它会变为空?

1 个答案:

答案 0 :(得分:1)

<form method="POST"  action="{{ url('images/save') }}" enctype="multipart/form-data">