如何使用 laravel 5.2 验证通过 dropzone 插件上传的多个图像 我用谷歌搜索并测试了很多解决方案,但确实不起作用。 感谢您的帮助。
<?php
namespace App\Http\Controllers;
use App\Bill;
use App\Http\Requests;
use Illuminate\Http\Request;
use Image;
class OrderBillController extends Controller
{
public function saveFile(Request $request, $id)
{
//dd($request->all()); // testing
// Here I need to vaidate multiple Files
$this->validate($request, [
$request->file('file') => 'image|max:3000'
]);
$file = $request->file('file');
for ($i = 0; $i < count($file); $i++) {
$name = $id . '_' . time() . '_' . rand(11, 99) . '_' . $file[$i]->getClientOriginalName();
if ($file[$i]->move(public_path() . '/bills', $name)) {
Bill::create(['order_id' => $id, 'name' => $name]);
$img = Image::make(public_path() . '/bills/' . $name)
->resize(300, 200)
->save(public_path() . '/bills/' . 'tn_' . $name);
Bill::create(['order_id' => $id, 'name' => ('tn_' . $name)]);
}
}
}
}
第一次评论后我尝试了这个
public function saveFile(Request $request, $id)
{
//dd($request->all());
$this->validate($request, [
$request->file('file') => 'image|max:3000'
]);
$file = $request->file('file');
$name = $id . '_' . time() . '_' . rand(11, 99) . '_' . $file->getClientOriginalName();
if ($file->move(public_path() . '/bills', $name)) {
Bill::create(['order_id' => $id, 'name' => $name]);
$img = Image::make(public_path() . '/bills/' . $name)
->resize(300, 200)
->save(public_path() . '/bills/' . 'tn_' . $name);
Bill::create(['order_id' => $id, 'name' => ('tn_' . $name)]);
}
}
最佳答案
正如评论中提到的,Dropzone 一次仅上传 1 个文件,因此您仅验证一个文件。您的验证码应该是
$this->validate($request, [
'file' => 'image|max:3000'
]);
您也不需要“for”循环,因为请求中没有发送多个文件。您只是处理一张图像
关于laravel - 使用 Dropzone 插件和 Laravel 验证上传多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38065342/