【发布时间】:2016-10-30 03:20:52
【问题描述】:
如何使用 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 不会在同一个请求中发送所有文件。每个文件都是单独上传的。您只需在控制器方法中验证单个文件。
-
我试过了,但没用,正如代码所示
标签: laravel file-upload