Davood
4 سال پیش توسط Davood مطرح شد
11 پاسخ

مشکل در آپلود کردن فایل mp3

سلام من میخوام داخل وب سایتم پادکست آپلود کنم اما یه مشکل دارم
عکس رو که آپلود میکنم مشکلی نیست و همه چیز رو بهم برمیگردونه (name-type-tmp_name)

array(5) { ["name"]=> string(36) "940f18c96bf1614ce2febe3a23844dca.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpthVSVW" ["error"]=> int(0) ["size"]=> int(10857) } 

اما mp3 رو که آپلود میکنم کامل نمیاد مثلا tmp_name رو بهم نمیده که بتونم آپلود کنم یا type رو بهم نمیده

array(5) { ["name"]=> string(20) "پادکست (2).mp3" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }

مشکل کجاست؟؟؟؟

@hesammousavi
@ali.bayat


ثبت پرسش جدید
محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@dfardabasi
لطفا کد رو قرار بدید. این طوری چیزی مشخص نمیشه.


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش آپدیت شد
0

کد html

<form class="form" method="post" action="" enctype="multipart/form-data">
                            <div class="form-body">

                                <div class="form-group">
                                    <label for="title"> عنوان پادکست </label>
                                    <input type="text" id="title" class="form-control round"
                                           name="title">
                                </div>

                                <div class="form-group">
                                    <label for="audio"> تصویر </label>
                                    <input type="file" id="img" class="form-control round"
                                           name="img">
                                </div>

                                <div class="form-group">
                                    <label for="audio"> فایل صوتی </label>
                                    <input type="file" id="audio" class="form-control round"
                                           name="audio">
                                </div>

                                <div class="form-group">
                                    <label for="numpod"> شماره پادکست </label>
                                    <input type="text" id="numpod" class="form-control round"
                                           name="numpod">
                                </div>

                                <div class="form-group">
                                    <div>
                                        <textarea name="body" id="editor" cols="30" rows="10"></textarea>
                                    </div>
                                </div>

                                <div class="form-group">
                                    <label for="numpod"> مدت زمان پادکست </label>
                                    <input type="text" id="timepod" class="form-control round"
                                           name="timepod">
                                </div>

                                <div class="form-group">
                                    <div>
                                        <input type="hidden" name="dt" id="dt"
                                               value="" />
                                    </div>
                                </div>
                            </div>

                            <div class="form-actions">
                                <button type="submit" name="send" id="send" class="btn btn-primary">
                                    <i class="icon-check2"></i> ارسال
                                </button>
                            </div>
                        </form>

کنترلر

public function insert(){
        if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['send'])){
            $img = $_FILES['img'];
            $audio = $_FILES['audio'];
            $img = $this->uploadFile($img,"podcast/img");
            $audio = $this->uploadpod($audio,"podcast/voice");
            $this->pod->addpodcast($_POST,$img,$audio);
            header("location:list"); 
        }
        return View::renderTemplate('admin.podcast.insert');
    }

این کد آپلود یه تصویر سادست که کار میکنه

public function uploadFile($file, $dir)
    {
        if (isset($file)) {
            $extension = explode(".", $file["name"]);
            $type = $file['type'];
            $size = $file['size'];

            if ($type == "image/jpeg" || $type == "image/jpg" || $type == "image/png") {
                if ($size <= 1000000) {
                        $new_name = md5(microtime()) . "." . $extension[1];
                        $path = "images/site/img-up/$dir/" . $new_name;
                        move_uploaded_file($file["tmp_name"], $path);
                        return $new_name;

                } else {
                    echo "حجم فایل ارسالی نباید بیشتر از 1MB باشد";
                    return false;
                }
            } else {
                echo "فرمت فایل ارسالی غیر مجاز است";
                return false;
            }
        }
        return true;
    }

چون از فایل ارسالی که var_dump میگیرم همه چیز رو بهم میده و میتونم آپلود کنم

array(5) { ["name"]=> string(36) "940f18c96bf1614ce2febe3a23844dca.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpthVSVW" ["error"]=> int(0) ["size"]=> int(10857) } 

ولی این کد دقیقا به همین شکله ولی کار نمیکنه

public function uploadpod($file, $dir)
    {
        var_dump($file);exit;
        if (isset($file)) {
            $extension = explode(".", $file["name"]);
            $type = $file['type'];
            $size = $file['size'];

            if ($type == "audio/mpeg"){
                if ($size <= 10000000) {
                    $new_name = md5(microtime()) . "." . $extension[1];
                    $path = "images/site/img-up/$dir/" . $new_name;
                    move_uploaded_file($file["tmp_name"], $path);
                    return $new_name;

                } else {
                    echo "حجم فایل ارسالی نباید بیشتر از 5MB باشد";
                    return false;
                }
            } else 
                echo "فرمت فایل ارسالی غیر مجاز است";
                return false;
            }
        }
        return true;
    }

چون مقدار type - tm_name-size هیچی رو به من نمیده فقط عنوان رو بهم برمیگیردونه

array(5) { ["name"]=> string(20) "پادکست (2).mp3" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }

کد های مدل رو نذاشتم چون فایل صوتی توی دیتابیس ثبت میشه فقط آپلود نمیشه

لطفا راهنماییم کنید ممنون
@hesammousavi
@ali.bayat
@mohsenbostan


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@dfardabasi
یک دور upload_max_filesize و post_max_size رو توی php.ini بررسی کنیدکه اندازه حداکثر رو گذاشته باشید.


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش مطرح شد
0

@mohsenbostan
اینی که فرمودید رو گذاشتم به فایل php.ini تو root سایت ساختم و این مقادیر رو داخلش گذاشتم

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 3000
max_input_vars = 6000

محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@dfardabasi
با استناد بر این قسمت از داکیومنت php، و اررور 1 که شما در یافت کردید مشکل از php.ini تون هستش:
https://www.php.net/manual/en/features.file-upload.errors.php#53278


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0
Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش مطرح شد
0

@mohsenbostan
مشکل یه مورد بود و نوشته بود post_max_size باید همیشه بیشتر از upload_max_filesize باشه که منم تغییرش دادم

upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 3000
max_input_vars = 6000

ولی بازم کار نکرد


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@dfardabasi
شما php.ini وب سرور رو تغییر دادید یا اونی که خودتون ساختید ؟ php.ini وب سرور ملاکه


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش مطرح شد
0

@mohsenbostan
با هاستیگم تماس گرفتم گفتن که ما نمیتونیم برات تغییر بدیم خودتون باید یه فایل تو root اصلی ایجاد کنی مقادیری رو که میخوای تغییر بدی به اندازه دلخواهت


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@dfardabasi
اگه هاستتون Cpanel هستش طبق لینک زیر تغییر بدید:
https://chemicloud.com/kb/article/how-to-increase-the-upload_max_filesize-limit-in-cpanel/
و اگه Directadmin هستش طبق لینک زیر :
https://www.betterhostreview.com/increase-max-file-upload-size-in-directadmin.html


Davood
تخصص : PHP - Laravel
@dfardabasi 4 سال پیش مطرح شد
0

طبق لینک cpanel نگاه میکنم ولی این گزینش نیست تو cpanel
فقط یه multiphp manager هست که فقط میتونم ورژن php رو عوض کنم دسترسی به php.ini سرور ندارم
فکر کنم چون هاست اشتراکیه اینطوری هستش

@mohsenbostan


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

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