سلام
دوستان عزیز من یه آپلود کد رو نوشتم یه مشکلی دارم آپلود مالتی اجکس تصویر رو درست انجام میده تابع time گذاشتم هر عکس رو اسمش رو تغییر میده به درستی و ذخیره می کنه اما مشکل من اینه می خوام هر عکس من تو یه فولدر ذخیره بشه یعنی همین مالتی تصویر که اپلود می کنم هر عکس بره تو یه فولدر بر اساس تابع time هر عکس یه پوشه بره.
کدم برای اپلود کار می کنه اما مشکل اینجاست که فقط 1 پوشه می سازه و نه به تعداد هنگام اپلود.
ممنون می شم دوستان راه حل بدن.
if($ext == 'jpg' || $ext == 'png' || $ext == 'JPG' || $ext == 'PNG'){
$new_file_name = time().'.'.$ext;
$targetPath = 'uploads/'.mkdir(time(), 0700); //4
$targetFile = $targetPath. $new_file_name; //5
if ($img = @imagecreatefromstring(file_get_contents($tempFile))) {
$upload_result = move_uploaded_file($tempFile,$targetFile); //6
echo $new_file_name;
}else{
echo 'FAILED';
}
}else{
echo 'FAILED';
}
درود منظورتون اینه که اگه تکی امجاک لدین درسته و اگر چندتا باشه مشکل داره؟ من درست سوالتون رو نفهمیدم
نگاه کنید دوست عزیز من چند فایل رو اجکس اپلود می کنم بدون مشکل اپلود میشه تغییر نام پیدا می کنه. می خوام مثلا اگه 4 فایل انتخاب کردم 4 فولدر ساخته بشه هر فایل بره تو یه فولدر منظور اینه.که نمیشه فقط 1 فولدر ساخته میشه هر چند تا فایل که سلکت م یکنم
سلام
با کد زیر می تونید این کار رو انجام بدید.
$file = $request->file('upload');
$filename = $file->getClientOriginalName();
$imagePath = "/upload/body/{$filename}/";
$file->move(public_path($imagePath), $filename);
فقط publicpath رو باید خودتون set کنید که در پوشه public بارگذاری بشه
@hunt.coders1989
دوست عزیز ممنون در ابتدا باید اما مشکل اینجاست
1- لاراول نیست و php بدون فریم ورک
2- هدف این هستش یک فرم داریم به صورت اجکس مثلا 5 تا عکس بهش می دیم هر عکس رو یک فولدر بسازه بریزه توش یعنی هر فایل 1 فولدر بسازه براش اونم اجکس
اتفاقا شما می تونید با jquery یا javascript اسم فایل رو بگیری و به سمت سرور بفرستی. اگر هم چند تا فایل دارید می تونید multiple رو داخل یک آرایه بفرستید و داخل سرور از foreach استفاده کنید و داخل $filename بزارید. لاراول و php فرقی نداره شما به جای getoriginalname از $_FILE استفاده کن.
@hunt.coders1989
من دارم تو for استفاده می کنم اما نمی دونم مشکل از کدوم قسمت هستش که فقط 1 فولدر می سازه نه چندتا
for($index = 0;$index < $countfiles;$index++){
if(isset($_FILES['files']['name'][$index]) && $_FILES['files']['name'][$index] != ''){
// File name
$filename = $_FILES['files']['name'][$index];
// Get extension
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// Valid image extension
$valid_ext = array("png","jpeg","jpg");
// Check extension
if(in_array($ext, $valid_ext)){
// Make Folder
$newfolder = time();
//$newpath = mkdir(time(), 0700);
// File path
$path = $upload_location.$filename;
// Upload file
if(move_uploaded_file($_FILES['files']['tmp_name'][$index],$path)){
$files_arr[] = $path;
}
}
}
}
شما newfolder را جایی استفاده نکردید. $files_arr چی هست اینجا. لطفا کدتون رو یه کم تمیز کنید تا بتونم کمکتون کنم.
@hunt.coders1989
سلام و درود
دوست عزیز بنده فکر میکنم چون سرعت اجرا بالا هست و شما از تابع time استفاده میکنید که زمان رو بر اساس ثانیه میده و زمان اجرا احتمالا کمتر از ثانیه است پوشه ها رو میسازه ولی همه هم نام میشن، شما اگر براساس میلی/میکرو ثانیه کار کنید احتمالا مشکلتون حل بشه:
list($msec, $sec) = explode(' ', microtime());
$time_milli = $sec.substr($msec, 2, 3); // '1491536422147'
$time_micro = $sec.substr($msec, 2, 6); // '1491536422147300'
// YOUR CODE
$new_file_name = $time_milli.'.'.$ext;
$targetPath = 'uploads/'.mkdir($time_milli, 0700); //4
موفق و سلامت و بدور از کرونا باشید 🌹
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟