با سلام من یک فرم دارم که اطلاعات در دیتابیس ثبت میکنه و در این فرم یک input برای دارم که clone میشه اما زمانی که فرم ارسال میشه فقط یکی از عکس ها آپلود میشه و فایلهای بعدی آپلود نمیشوند
public function store(Request $request)
{
$data = $request->validate([
'company_name' => 'required|max:255',
'cat' => 'required',
'malek' => 'nullable',
'ostan' => 'required',
'shahr' => 'required',
'state' => 'required',
'address' => 'required',
'lat' => 'required',
'long' => 'required',
'sabet' => 'required',
'mobile' => 'required',
'status' => 'required',
'website' => 'nullable|string',
'telegram' => 'nullable|string',
'instagram' => 'nullable|string',
'facebook' => 'nullable|string',
'linkdin' => 'nullable|string',
'aparat' => 'nullable|string',
'twitter' => 'nullable|string',
'rules' =>'accepted',
'user_id' => 'required',
'keywords' => 'required',
'product' => 'nullable',
'about' => 'required',
'captcha' => 'required|captcha',
'logo' => 'required|image|mimes:jpeg,png,jpg|max:500',
'filenames' => 'nullable',
'filenames.*' => 'mimes:jpeg,png,jpg,gif|max:2048'
]);
$image = $request->file('logo');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('logos'), $new_name);
$ded = new Dedicated();
$ded->company_name = $data['company_name'];
$ded->cat = $data['cat'];
$ded->website = $data['website'];
$ded->telegram = $data['telegram'];
$ded->instagram = $data['instagram'];
$ded->twitter = $data['twitter'];
$ded->linkdin = $data['linkdin'];
$ded->facebook = $data['facebook'];
$ded->aparat = $data['aparat'];
$ded->malek = $data['malek'];
$ded->ostan = $data['ostan'];
$ded->shahr = $data['shahr'];
$ded->state = $data['state'];
$ded->user_id = Auth::user()->id;
$ded->address = $data['address'];
$ded->lat = $data['lat'];
$ded->long = $data['long'];
$ded->keywords = $data['keywords'];
$ded->sabet = $data['sabet'];
$ded->mobile = $data['mobile'];
$ded->about = $data['about'];
$ded->logo = $new_name;
$ded->shanbe = $request->s0;
$ded->yekshanbe = $request->s1;
$ded->doshanbe = $request->s2;
$ded->seshanbe = $request->s3;
$ded->charshanbe = $request->s4;
$ded->panjshanbe = $request->s5;
$ded->jome = $request->s6;
$ded->product = $request->product;
$ded->transaction_id = $request->transaction_id;
$invoice = Transactions::where('user_id',Auth::user()->id)->orderBy('created_at', 'desc')->first();
$ded->due_date = Carbon::now()->addMonths($invoice->tedad);
$ded->tedad = $invoice->tedad;
$ded->transaction_id = $invoice->id;
$ded->save();
foreach ($request->file('filenames') as $key => $value) {
$imageName = time(). $key . '.' . $value->getClientOriginalExtension();
$value->move(public_path('/images/didicated/'.Auth::user()->id.'/'.$ded->id), $imageName);
$img = new Upload();
$img->image = $imageName;
$img->user_id = Auth::user()->id;
$img->ded_id = $ded->id;
$img->save();
}
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
$myString = $request->keywords;
$myArray = explode('،', $myString);
$myArray = multiexplode(array(",","،"),$myString);
$deds = Dedicated::orderBy('created_at', 'desc')->first();
for($i=0 ; $i< count($myArray); $i++) {
$kk = Keywords::where('word', '=', $myArray[$i])->first();
if ($kk === null) {
$key = new Keywords();
$key->word = $myArray[$i];
$key->ded_id = $deds->id;
$key->save();
}
}
$invoice = Transactions::where('user_id',Auth::user()->id)->orderBy('created_at', 'desc')->first();
$ded = Dedicated::where('user_id',Auth::user()->id)->orderBy('created_at', 'desc')->first();
$invoice->ded_id = $ded->id;
$invoice->update();
// return Response::json($normalkar);
return redirect()->route('add.image');
}
<div class="input-group hdtuto control-group lst increment">
<div id="wrapper">
<div id="c3"><input type="text" name="matn[]" class="myfrm form-control" /></div>
<div id="c1"><input type="file" name="filenames[]" class="myfrm form-control" style="width: 350px;" /></div>
</div>
<div class="input-group-btn" style="padding-bottom: 10px; padding-top: 10px; direction: rtl;">
<button class="logobtn" type="button" style="width: 150px;">افزودن عکس</button>
</div>
</div>
<div class="clone hide">
<div class="hdtuto control-group lst input-group" style="margin-top: 10px;">
<div id="wrapper">
<div id="c2"><label>توضیحات جایگزین</label></div>
<div id="c1"><input type="file" name="filenames[]" class="myfrm form-control" style="width: 350px;" /></div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(".logobtn").click(function(){
var lsthmtl = $(".clone").html();
$(".increment").after(lsthmtl);
});
$("body").on("click",".btn-danger",function(){
$(this).parents(".hdtuto control-group lst").remove();
});
});
</script>```
لطفا دوستان یه کمکی به بنده بکنید تا بتونم در همین فرم چندین عکس نیز آپلود کنم
یه روش هست که دارن ازش استفاده میکنن و به این صورت هست که برای آپلود هر چند تا عکس که دلت بخواد باید یه دکمه قرار بدی که با جی کویری بتونی هر چند تا که خواستی input فایل به فرمت اضافه کنی و اسمشونو به صورت آرایه در نظر بگیر ی بعد در سمت سرورت با یه حلقه foreach این آرایه رو پیمایش کنی و فایل هارو دونه دون آپلود کنی.
<div id="list">
</div>
<button onclick="addInputFile()">
Add Input File
</button>
<script>
function addInputFile() {
var html = `<div class="form-group">
<input type="file" name="files[]">
</div>`;
$('#list').append(html);
}
</script>
کاری باقی نمیمونه فقط در سمت سرورت این آرایه files[] رو اعتبار سنجی و با حلقه foreach فایل هاشو آپلود کن.
درود
ممنون از جوابتون
ولی اگر به کدها نگاه میکردید من هم از همین روش استفاده کردم ولی زمان آپلود فقط یکی از فایلها آپلود میشه!
درود
دوستان راه حلی برای این مشکل من وجود داره ؟
dd($request->file('filenames') );
این کد رو بزنین تست کنین که آیا همه مقادیر فایل ها رو دریافت میکنه یا نه
@dr.m.abdollahi من قسمت ارسال فرم رو تست گرفتم مشکل از داخل کنترلر هست با همین کد ها چند تا فایل می فرسته.
با این کد هم تست بگیرین خروجیش چند فایل میشه یا نه
dd($request->allFiles());
درود
بعید میدونم از کنترل باشه
بازم همون فایل اول ارسال میشه
array:1 [▼
"filenames" => array:1 [▼
0 => Illuminate\Http\UploadedFile {#1395 ▼
-test: false
-originalName: "6.jpg"
-mimeType: "image/jpeg"
-error: 0
#hashName: null
path: "D:\xampp\tmp"
filename: "phpFBB2.tmp"
basename: "phpFBB2.tmp"
pathname: "D:\xampp\tmp\phpFBB2.tmp"
extension: "tmp"
realPath: "D:\xampp\tmp\phpFBB2.tmp"
aTime: 2020-12-21 14:07:23
mTime: 2020-12-21 14:07:23
cTime: 2020-12-21 14:07:23
inode: 86412817850992837
size: 42947
perms: 0100666
owner: 0
group: 0
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
linkTarget: "D:\xampp\tmp\phpFBB2.tmp"
}
]
]
کد html رو داخل enctype='multipart/form-data' در فرم گذاشتین یا از روش های دیگه ای مثل ای جکس و یا ... استفاده کردید ؟
@dr.m.abdollahi
همه کدتون رو داخل تگ form قرار دادین دیگه درست ؟
این فایلی که میگین فقط همین ارسال میشه توی کدوم اینپوت های جدید یا همون اینپوت بالا ؟ منظورم اینجاست
<div id="wrapper">
<div id="c3"><input type="text" name="matn[]" class="myfrm form-control" /></div>
***<div id="c1"><input type="file" name="filenames[]" class="myfrm form-control" style="width: 350px;" /></div>
</div>
یا
<div id="wrapper">
<div id="c2"><label>توضیحات جایگزین</label></div>
<div id="c1"><input type="file" name="filenames[]" class="myfrm form-control" style="width: 350px;" /></div>
</div>
که هر بار بعد هر کلیک بهش میشه اینپوت جدید اضافه کرد .
اگر امکانش هست کد کامل قسمت view رو بزارین اینجا
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟