【问题标题】:Upload multiple images using Dropzone plugin with Laravel validation使用带有 Laravel 验证的 Dropzone 插件上传多张图片
【发布时间】: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


【解决方案1】:

正如评论中提到的,Dropzone 一次只上传 1 个文件,因此您只验证一个文件。你的验证码应该是

$this->validate($request, [
        'file' => 'image|max:3000'
    ]);

您也不需要“for”循环,因为请求中没有发送多个文件。你只是在处理一张图片

【讨论】:

  • 它确实有效 ..thanx .. 你知道如何重新设置和编辑 dropzone 错误消息的样式吗?
  • 我只用过一次,所以很遗憾我没有
猜你喜欢
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2011-07-06
  • 2015-04-23
  • 2020-10-07
  • 1970-01-01
相关资源
最近更新 更多