codex68
4 سال پیش توسط 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
@ajdar9667 4 سال پیش مطرح شد
0

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


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

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


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش آپدیت شد
0

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

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

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


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

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


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

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


codex68
@hunt.coders1989 4 سال پیش مطرح شد
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
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 4 سال پیش مطرح شد
0

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


امین ملایی
تخصص : Web Developer
@mollayii 4 سال پیش آپدیت شد
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

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


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

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