我想知道如何在帖子中添加多张图片?
目前我有geline
我试图获取图片并附加到ImageController
,但问题是如果我使用该方法,因为我仍然没有保存我的帖子就没有id附在图像上。
有什么想法吗?
请查看更好的理解:
刀片:
post_id
控制器:
<form action="upload" id="upload" enctype="multipart/form-data" method="post">
<div class="row">
<div class="col-md-6"><input type="file" class="form-control" name="files[]" multiple></div>
<div class="col-md-6"><input type="submit" class="btn btn-success" value="Upload now"></div>
</div>
</form>
路线:
public function upload(Request $request) {
$files = $request->file('file');
if (!empty($files)):
foreach($files as $file):
Storage::put($file->getClientOriginalName(), file_get_contents($file));
endforeach
endif;
return \response::json(array('success' => true));
}
答案 0 :(得分:2)
方法1。
如果您尚未完成提交帖子,请返回$request->photos
或将其放入会话中。在提交后分配参考文献。
方法2。 首先,将它们保存在[temp]中然后移动并分配到帖子。
方法3。
在数据库中创建默认记录,将图像分配给该记录,获取record_id post_id
并返回到post_id
的表单。然后用post_id填充该帖子。
方法4。 在数据库中保存图像不是一个好的选择,只需将它们保存为文件并在数据库中放置引用链接,或者通过与帖子具有相同ID的文件夹的ID找到它们,或者美化它们的链接...绝对不能将它们保存到数据库中。我认为,每个人都必须找到适合自己生活的方式。
答案 1 :(得分:0)
试试这个: -
use App\ProductsPhoto; \\ add in top of controller
public function upload(Request $request) {
$product = Product::create($request->all());
if ($request->hasFile('files')) {
$files = $request->file('files');
foreach($files as $file){
$productsPhotos = new ProductsPhoto;
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$fileName = str_random(5)."-".date('his')."-".str_random(3).".".$extension;
$destinationPath = 'images/ProductsPhotos'.'/';
$file->move($destinationPath, $fileName);
$productsPhotos->product_id = $product->id,
$productsPhotos->filename = $fileName;
$productsPhotos->save();
}
}
return 'Upload successful!';
}
希望它有所帮助!
答案 2 :(得分:0)
用于上传和显示图像 如果你使用两张桌子。
upload.blade.php
<form method="post" action="{{ url('/uploads') }}" enctype="multipart/form-data">
<input type="file" id="file" name="files[]" class="inputfile" value="{{ old('arquivo') }}" multiple />
控制器
public function show() {
$images = DB::select('SELECT * FROM table1 INNER JOIN table2 on table1.id = table2.id_file');
return view('index')->with('images', $images);
}
public function upload(yourRequest $request) {
$images = model1::create($request->all());
foreach ($request->files as $file) {
$filename = $file->store('/uploads');
modelFiles::create([
'id_file' => $images->id,
'file' => $filename
]);
}
return redirect()->action('Controller@show')->withInput(Request::only('name'));
}
index.blade.php
@foreach($images as $i)
<div class="item {{ $loop->first ? 'active' : '' }}">
<img src="{{ asset("storage/$i->file") }}" alt="...">
</div>
@endforeach