2017-02-08 6 views
0

Ich benutze Dropzone mit Laravel um mehrere Bilder hochzuladen und es funktioniert korrekt. Was ich verlange, ist, dass ich sie sofort hochladen und dann eine E-Mail an meinen Kunden senden möchte, um ihm zu zeigen, dass Fotos hochgeladen wurden.Hochladen mehrerer Bilder mit dropzone.js mit Laravel

Vielen Dank im Voraus.

<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

Welche Version von Laravel laufen Sie? Mailables wurden in 5.3 eingeführt und du hast aus irgendeinem Grund mehrere Versionen von Laravel getaggt. Veröffentlichen Sie auch Ihren Code. – Ian

+0

Ich verwende 5.2 Ich poste meinen Code, danke – allaghi

Antwort

0

Wenn ich meine Erfahrungen teilen dann für jede Form eine eindeutige ID erstellen wie

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

Jetzt haben Sie Identifizierung für jedes Formular rechts. Fügen Sie es mit jedem Bild ein. Es ist sehr einfach jedes Bild zu verfolgen.

Beispiel:

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

Sobald Sie einsetzen, dass Sie Spalte form_token haben alle hochgeladenes Bild zu einem Zeitpunkt zu finden. Nehmen wir an, Ihr Benutzer hat 5 Bilder hochgeladen und jedes Bild hat dasselbe Token. Finde jetzt diese Bilder nur nach Token und sende sie in Mail.

$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); 
}); 

Jetzt Ihre Mail-View-Datei haben Fotos Sammlung Objekt, so dass Sie es einfach ausdrucken können. Etwas wie dieses:

@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

Ich mag wirklich, was Sie uns geteilt haben und es ist sehr nützlich und ich mag Ihre Technik auch. aber ich möchte E-Mails automatisch senden, nachdem ich die Bilder hochgeladen habe? – allaghi

+0

Hallo Check editierte Antwort kann Ihnen helfen –

Verwandte Themen