我使用的悬浮窗与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('noreply@example .com','Example ');
$message->to($car->user->email,$car->user->full_name);
});
如果我分享我的经验,那么对于每个表单,如创建一个唯一的ID
<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('noreply@example .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
let image_index = 0;
Dropzone.autoDiscover = false;
$(function () {
let feedback_img_upload = new Dropzone('#image_upload', {
paramName: "file",
uploadMultiple: true,
parallelUploads: 5,
maxFilesize: 500,
acceptedFiles: '.jpg, .png, .gif, .pdf, .jpeg',
previewTemplate: document.getElementById('preview').innerHTML,
addRemoveLinks: true,
dictRemoveFile: 'Remove file',
dictFileTooBig: 'Image is larger than 16MB',
timeout: 10000,
url: "/images-save",
init: function () {
this.on("removedfile", function (file) {
let inputObj = $.parseJSON(file['xhr'].response);
$.post({
url: '/images-delete',
data: {id: inputObj.image_name, _token: $('[name="_token"]').val()},
dataType: 'json',
success: function (data) {
if (file.xhr != undefined) {
let imgId = inputObj.file_name;
$('#inquiry_imgfile_' + imgId).remove();
}
return true;
}
});
});
},
});
feedback_img_upload.on("success", function (file, obj) {
if (obj.status == 1) {
image_index++;
$('#inquiry_imgfile_main_div').append('<input class="inquiry_imgfile_upload" id="inquiry_imgfile_' + obj.file_name + '" name="inquiry_imgfile[]" value="" type="hidden"/>');
$("#inquiry_imgfile_" + obj.file_name).val(obj.image_name);
}
});
});
public function store(Request $request)
{
try {
$photos = $request->file('file');
if (!is_array($photos)) {
$photos = [$photos];
}
if (!is_dir($this->photos_path)) {
mkdir($this->photos_path, 0777);
}
$img_names = [];
for ($i = 0; $i < count($photos); $i++) {
try{
$photo = $photos[$i];
$name = date('YmdHisu') . rand(1, 1000000) . $i;
$file_name = $name . rand(1, 1000000);
$resize_name = $file_name . '.' . $photo->getClientOriginalExtension();
$img_names[] = $resize_name;
$photo->move($this->photos_path, $resize_name);
$this->save();
$img = Image::make($photo);
$img->text(' Mysale.lk', 200, 200, function ($font) {
$font->file(public_path('app/OpenSans-Light.ttf'));
$font->size(50);
$font->color('#fdf6e3');
$font->align('center');
$font->valign('top');
});
$img->save($this->photos_path . '/' . $resize_name);
return Response::json([
'image_name' => $resize_name,
"status" => 1,
"file_name" => $file_name
], 200);
exit();
}catch (\Exception $ex){
dd($ex);
}
}
} catch (\Exception $e) {
return Response::json([
"status" => 0
], 401);
exit();
}
}