2017-02-08 33 views
0

Я использую dropzone с laravel для загрузки нескольких изображений, и он работает правильно. что я прошу, я хочу загрузить их сразу, а затем отправить электронное письмо моему клиенту, чтобы показать ему, что фотографии были загружены.Загрузка нескольких изображений с помощью dropzone.js с Laravel

Заранее спасибо.

<form action="{{route('upload.photos')}}" method="post" enctype="multipart/form-data" class="dropzone" id="dropzoneFileUpload" > 
        {{csrf_field()}} 
        <div> 
         <h3 class="text-center">Upload Multiple Image By Click On Box</h3> 
        </div> 
        <div class="fallback"> 
         <input name="file" type="file" multiple /> 
        </div> 


       </form> 

<script type="text/javascript"> 
    Dropzone.options.imageUpload = { 
     maxFilesize:500, 
     acceptedFiles: ".jpeg,.jpg,.png,.gif", 
     autoProcessQueue: false, 
     uploadMultiple: true, 
     parallelUploads: 25, 
     maxFiles: 25 

    }; 
</script> 

$file = $request->file('file');  
     $fileName = time().$file->getClientOriginalName(); 
     Storage::disk('local')->put($car_id.'/'.$fileName, File::get($file)); 
     Photo::create([ 
      'photo_name'=>$fileName, 
      'car_id'=>$car_id 
     ]); 
$data = [ 
     'first_name'=>$car->user->first_name, 
     'last_name'=>$car->user->last_name, 
     'vin'=>$car->vin, 
     'model'=>$car->model, 
     'make' =>$car->make 
    ]; 
     Mail::send('admin.email.send_album_notification',$data,function($message) use($car){ 
      $message->subject('Pictures for Test - Example '); 
      $message->from('[email protected] .com','Example '); 
      $message->to($car->user->email,$car->user->full_name); 
     }); 
+0

Какую версию Laravel вы используете? Почтовые сообщения были представлены в 5.3, и по какой-то причине вы отметили несколько версий Laravel. Также разместите свой код. – Ian

+0

Я использую 5.2 Я отправлю свой код, спасибо – allaghi

ответ

0

Если я делюсь своим опытом, то создать один уникальный идентификатор для каждой формы, как

<form> 
    <input type="hidden" value="{{ uniqid() .'-'. Carbon\Carbon::now()->timestamp }}" name="form-token"/> 
<form> 

Теперь у Вас есть идентификатор для каждой формы права. Вставьте его с каждым изображением. Очень легко отслеживать каждое изображение.

Для примера:

Photo::create([ 
    'photo_name'=>$fileName, 
    'car_id'=>$car_id, 
    'form_token'=>$request->get('form-token'), 
]); 

После того, как вы вставите, что Вы form_token колонку, чтобы найти все загруженное изображение в момент. Предположим, предположим, что ваш пользователь загрузил 5 изображений, и каждое изображение имеет один и тот же токен. Теперь просто найдите эти изображения через токен и отправьте по почте.

$photos = Photo::whereFormToken($request->get('form-token'))->get(); 
$data['photos'] = $photos; 
Mail::send('admin.email.send_album_notification',$data,function($message) use($car){ 
    $message->subject('Pictures for Test - Example '); 
    $message->from('[email protected] .com','Example '); 
    $message->to($car->user->email,$car->user->full_name); 
}); 

Теперь у вашего файла просмотра электронной почты есть объект коллекции фотографий, поэтому вы можете просто распечатать его. Что-то вроде этого:

@foreach($photos as $photo_key => $photo_value) 
     <?php $pathToImage = public_path()."/".$photo_value->image_name; ?> 
     <img src="{!! $photo_value->embed($pathToImage); !!}" style="max-width: 80%;padding-top: 20px;"> 
@endforeach 
+0

Мне очень нравится то, что вы нам поделили, и это очень полезно, и мне нравится ваша техника. но я хочу отправить сообщение автоматически после завершения загрузки изображений? – allaghi

+0

Hi Check отредактированный ответ может помочь вам –