enctype="multipart/form-data"在使用DropzoneJS将上传的文件保存到数据库时一直卡在这个问题上。
在这种情况下的错误是它发布了所有其他表单数据,除了上传的文件,该文件返回空响应,尽管我不确定我在这里缺少什么。
如果有人能设法发现错误,将不胜感激!
视图
<form action="{{url('/save_information')}}" method="POST" enctype="multipart/form-data" class="form-horizontal" role="form">
<meta name="csrf-token" content="{{csrf_token()}}" />
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<legend></legend>
</div>
<label for="title">Title</label>
<input type="text" name="title" id="input-title" class="form-control">
<label for="description">Description</label>
<input type="text" name="description" id="input-description" class="form-control">
<div class="dropzone dropzone-previews" id="my-awesome-dropzone">
<input name="_token" type="hidden" value="{{ csrf_token() }}">
</div>
Jquery
<script type="text/javascript">
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone",{
url: "/save_information",
uploadMultiple: true,
autoProcessQueue: false,
addRemoveLinks: true,
paramName: "file", // The name that will be used to transfer the file
maxFilesize: 10, // MB
sending: function(file, xhr, formData) {
formData.append("_token", "{{ csrf_token() }}");
}
});
$('#submit-all').click(function(){
e.preventDefault();
myDropzone.processQueue();
});
控制器功能
if (Request::hasFile('filename')) {
$image = Request::file('filename');
$location = public_path('images/');
$filename = time() . '.' . $image->getClientOriginalExtension();
$image->move($location, $filename);
$trustDocument->image = $filename;
} else {
dd('no image found');
}
$trustDocument->save();
您设置的参数名称是"file",但在控制器中您引用的是"文件名"。
将控制器中的"文件名"替换为"文件"。
有关与 Laravel 拖放区的更详细集成,您可以参考本教程在 Laravel 5 应用程序中集成 Dropzone.js