在我的laravel应用程序中,我有一个保存多个图像的表单,以保存上传表,我的表单如下,
<form method="post" action="{{url('form')}}" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-group row required">
<div class="field" align="left" >
<h3>Upload images</h3>
<input type="file" class="files" name="files[]" multiple />
<input type="file" class="files" name="files[]" multiple />
<input type="file" class="files" name="files[]" multiple />
<input type="file" class="files" name="files[]" multiple />
</div>
</div>
和jquery查询图像,
<script>
$(document).ready(function() {
if (window.File && window.FileList && window.FileReader) {
$(".files").on("change", function(e) {
var clickedButton = this;
var files = e.target.files,
filesLength = files.length;
for (var i = 0; i < filesLength; i++) {
var f = files[i]
var fileReader = new FileReader();
fileReader.onload = (function(e) {
var file = e.target;
$("<span class=\"pip\">" +
"<img class=\"imageThumb\" src=\"" + e.target.result + "\" title=\"" + file.name + "\"/>" +
"<br/><span class=\"remove\">Remove image</span>" +
"</span>").insertAfter(clickedButton);
$(".remove").click(function(){
$(this).parent(".pip").remove();
});
});
fileReader.readAsDataURL(f);
}
});
} else {
alert("Your browser doesn't support to File API")
}
});
</script>
控制器的存储功能是,
$photos = $request->file('files');
if (!is_array($photos)) {
$photos = [$photos];
}
if (!is_dir($this->photos_path)) {
mkdir($this->photos_path, 0777);
}
for ($i = 0; $i < count($photos); $i++) {
$photo = $photos[$i];
$name = sha1(date('YmdHis') . str_random(30));
$save_name = $name . '.' . $photo->getClientOriginalExtension();
$resize_name = $name . str_random(2) . '.' . $photo->getClientOriginalExtension();
Image::make($photo)
->resize(250, null, function ($constraints) {
$constraints->aspectRatio();
})
->save($this->photos_path . '/' . $resize_name);
$photo->move($this->photos_path, $save_name);
$upload = new Upload();
$upload->filename = $save_name;
$upload->resized_name = $resize_name;
$upload->original_name = basename($photo->getClientOriginalName());
$upload->vehicle_id = $vehicle->id;
$upload->save();
但是当我在上面的表格中附上4张图片时。它只保存一个图像。附加到第一个输入文件的。为什么其他图像没有保存到表中。我怎样才能解决这个问题?
1条答案
按热度按时间nszi6y051#
你要么
multiple
属性,或者只使用一个文件输入multiple
属性。因为multiple
属性使单个文件输入能够通过在“文件浏览”对话框中选择多个文件一次上载多个文件。在控制器中,不应使用
$request->file(...)
因为它只检索一个文件,而不是一个文件数组。而是使用$request->images
并将文件输入的名称从files[]
至images[]
防止与…发生冲突$request
拥有名为“files”的属性。