راکت

مشکل در jquery php

8 پاسخ

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

پاسخ‌ها

8
امیر علی
امیر علی
@ajdar9667

تخصص: طراح و توسعه دهنده fullstack

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

codex68
codex68
@hunt.coders1989

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

شاید پاسخ شما همین‌جا باشد

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

$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.coders1989

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

codex68
codex68
@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;
            }
        }
    }

}
moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

امین ملایی
امین ملایی
@mollayii

تخصص: Web Developer

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

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

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

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