سلام من میخوام داخل وب سایتم پادکست آپلود کنم اما یه مشکل دارم
عکس رو که آپلود میکنم مشکلی نیست و همه چیز رو بهم برمیگردونه (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) }
مشکل کجاست؟؟؟؟
@dfardabasi
لطفا کد رو قرار بدید. این طوری چیزی مشخص نمیشه.
کد 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
شاید پاسخ شما همینجا باشد
@dfardabasi
یک دور upload_max_filesize و post_max_size رو توی php.ini بررسی کنیدکه اندازه حداکثر رو گذاشته باشید.
@mohsenbostan
اینی که فرمودید رو گذاشتم به فایل php.ini تو root سایت ساختم و این مقادیر رو داخلش گذاشتم
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 3000
max_input_vars = 6000
@dfardabasi
با استناد بر این قسمت از داکیومنت php، و اررور 1 که شما در یافت کردید مشکل از php.ini تون هستش:
https://www.php.net/manual/en/features.file-upload.errors.php#53278
@dfardabasi
طبق راهنمایی زیر مقادیر رو در php.ini اصلی قرار بدید :
https://hostadvice.com/how-to/how-to-edit-php-settings-in-apache-on-an-ubuntu-18-04-vps-or-dedicated-server/
@mohsenbostan
مشکل یه مورد بود و نوشته بود post_max_size باید همیشه بیشتر از upload_max_filesize باشه که منم تغییرش دادم
upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 3000
max_input_vars = 6000
ولی بازم کار نکرد
@dfardabasi
شما php.ini وب سرور رو تغییر دادید یا اونی که خودتون ساختید ؟ php.ini وب سرور ملاکه
@mohsenbostan
با هاستیگم تماس گرفتم گفتن که ما نمیتونیم برات تغییر بدیم خودتون باید یه فایل تو root اصلی ایجاد کنی مقادیری رو که میخوای تغییر بدی به اندازه دلخواهت
@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