راکت
codex68
codex68
توسط codex68 مطرح شد
8 پاسخ

مشکل در jquery php

سلام
دوستان عزیز من یه آپلود کد رو نوشتم یه مشکلی دارم آپلود مالتی اجکس تصویر رو درست انجام میده تابع 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';
    }

ثبت پرسش جدید
امیر علی
امیر علی
تخصص :طراح و توسعه دهنده fullstack
@ajdar96675 سال پیشمطرح شد
0

درود منظورتون اینه که اگه تکی امجاک لدین درسته و اگر چندتا باشه مشکل داره؟ من درست سوالتون رو نفهمیدم


codex68
codex68
@hunt.coders19895 سال پیشمطرح شد
0

نگاه کنید دوست عزیز من چند فایل رو اجکس اپلود می کنم بدون مشکل اپلود میشه تغییر نام پیدا می کنه. می خوام مثلا اگه 4 فایل انتخاب کردم 4 فولدر ساخته بشه هر فایل بره تو یه فولدر منظور اینه.که نمیشه فقط 1 فولدر ساخته میشه هر چند تا فایل که سلکت م یکنم


moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
0

سلام
با کد زیر می تونید این کار رو انجام بدید.

$file = $request->file('upload');
$filename = $file->getClientOriginalName();
$imagePath = "/upload/body/{$filename}/";
$file->move(public_path($imagePath), $filename);

فقط publicpath رو باید خودتون set کنید که در پوشه public بارگذاری بشه
@hunt.coders1989


codex68
codex68
@hunt.coders19895 سال پیشمطرح شد
0

دوست عزیز ممنون در ابتدا باید اما مشکل اینجاست
1- لاراول نیست و php بدون فریم ورک
2- هدف این هستش یک فرم داریم به صورت اجکس مثلا 5 تا عکس بهش می دیم هر عکس رو یک فولدر بسازه بریزه توش یعنی هر فایل 1 فولدر بسازه براش اونم اجکس


moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
0

اتفاقا شما می تونید با jquery یا javascript اسم فایل رو بگیری و به سمت سرور بفرستی. اگر هم چند تا فایل دارید می تونید multiple رو داخل یک آرایه بفرستید و داخل سرور از foreach استفاده کنید و داخل $filename بزارید. لاراول و php فرقی نداره شما به جای getoriginalname از $_FILE استفاده کن.
@hunt.coders1989


codex68
codex68
@hunt.coders19895 سال پیشمطرح شد
0

من دارم تو 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;
            }
        }
    }

}

moha li
moha li
تخصص :توسعه دهنده لاراول و Vue
@mohaligateway5 سال پیشمطرح شد
0

شما newfolder را جایی استفاده نکردید. $files_arr چی هست اینجا. لطفا کدتون رو یه کم تمیز کنید تا بتونم کمکتون کنم.
@hunt.coders1989


امین ملایی
امین ملایی
تخصص :Web Developer
@mollayii5 سال پیشمطرح شد
0

سلام و درود
دوست عزیز بنده فکر میکنم چون سرعت اجرا بالا هست و شما از تابع 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

موفق و سلامت و بدور از کرونا باشید 🌹


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام