2016-06-28 2 views
2

Как проверить несколько изображений, загруженных через плагин dropzone с laravel 5.2 Я googled и тестирую множество решений, но на самом деле не работает. Ваша помощь приветствуется.Загрузите несколько изображений с помощью Dropzone-плагина с проверкой Laravel

<?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)]); 
     } 
    } 
+1

Dropzone не отправляет все файлы в одном запросе. Каждый файл загружается отдельно. Вам нужно всего лишь проверить один файл в методе контроллера. –

+0

Я пробовал, но не работал, так как код предлагает –

ответ

3

Как уже отмечался в комментариях, Dropzone только добавления 1 файл в то время, так что вы только проверки одного файла. Вы код проверки должны быть

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

Вы также не нужны для вашей «для» цикла, поскольку не являются несколько файлов, отправляемых в запросе. Вы просто обрабатываете одно изображение

+0

он действительно работает .. thanx .. Знаете ли вы какую-либо идею о том, как переделывать и редактировать сообщения об ошибках dropzone? –

+0

Я работал с ним только один раз, поэтому, к сожалению, я не –

Смежные вопросы