PDA

View Full Version : تغییر نوع فایل از فرمت تصویر به mp3 در این خط کد



parmiscms
چهارشنبه 16 بهمن 1392, 11:10 صبح
من یه کد دارم برای بارگزاری عکس که می خوام تبدیلش کنم برای بارگزاری فایل mp3 .
کار انتخاب و ارسال فایل به پوشه مورد نظر و دیتابیس را انجام دادم. اما یکجاش هست که فرمت فایل را به تصویر مشخص شده. نتونستم تغییرش بدم به صوتی. لطفا کمک کنید:


elseif( $tp!=IMAGETYPE_GIF && $tp!=IMAGETYPE_JPEG && $tp!=IMAGETYPE_PNG ) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_invalidformat';
}

اینجوری گذاشتم قبول نکرد:

$tp!=AUDIOTYPE_MP3

parmiscms
چهارشنبه 16 بهمن 1392, 12:00 عصر
up
راهنمایی لطفا

mbf5923
چهارشنبه 16 بهمن 1392, 12:55 عصر
برای تبدیل فرمت های تصویری و صوتی مثل فیلم و موزیک باید از ffmpeg یا mencoder استفاده کنید

مهرداد سیف زاده
چهارشنبه 16 بهمن 1392, 13:34 عصر
چک کردن نوع فرمت فایل آپلود شده میتونه هر یک از گزینه‌های زیر باشه
audio/mpeg
audio/x-mpeg
audio/mp3
audio/x-mp3
audio/mpeg3
audio/x-mpeg3
audio/mpg
audio/x-mpg
audio/x-mpegaudio
این که کد شما به صورت $tp!=IMAGETYPE_PNG یعنی این مقدارها در یک متد دیگری داره چک میشه و صرفا نوشتن mp3 در اینجا کفایت نمیکنه و باید دنبال بررسی نوع مورد نظر در همون مت باشید و امکان validateکردن mp3 رو در وانجا اضافه کنید

parmiscms
چهارشنبه 16 بهمن 1392, 14:43 عصر
من کل کد را می زارم. اگه لطف کنید اصلاح کنید ممنون میشم.
در ضمن می خوام ظرفیت فایل mp3 حداکثر 5 مگابایت باشه و نتونند فایلی غیر از mp3 آپلود کنند
ممنون


$D->u = & $this->user;

$D->submit = FALSE;
$D->error = FALSE;
$D->errmsg = '';




//$send_notif = FALSE;
if(empty($this->user->info->cover))$this->user->info->cover = 'cover-nobck.gif';


$dirname = $C->IMG_DIR ."music/";

if(isset($_POST['bck_picture_cover']) && empty($_FILES['music']['tmp_name'])){
$D->submit = TRUE;
//$f = (object) $_FILES['cover'];
list($w, $h, $tp) = getimagesize($dirname . $_POST['bck_picture_cover']);
if( $w==0 || $h==0 ) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_invalidfile';
}
elseif( $tp!=IMAGETYPE_GIF && $tp!=IMAGETYPE_JPEG && $tp!=IMAGETYPE_PNG ) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_invalidformat';
}
else {
$fn = time().rand(100000,999999999).'.mp3';
$res = copy_background_cover($dirname . $_POST['bck_picture_cover'], $fn);
if( ! $res) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_cantcopy_cover';
}
}
if( ! $D->error ) {
$old = $this->user->info->cover;
if( $old != "cover-nobck.gif" ) {
rm( $C->IMG_DIR.'music/'.$old );
}
$db2->query('UPDATE users SET pmusic="'.$db2->escape($fn).'" WHERE id="'.$this->user->id.'" LIMIT 1');
$this->user->info->cover = $fn;
$this->network->get_user_by_id($this->user->id, TRUE);
}
}elseif( isset($_FILES['cover']) && is_uploaded_file($_FILES['cover']['tmp_name']) ) {
$D->submit = TRUE;
$f = (object) $_FILES['cover'];
list($w, $h, $tp) = getimagesize($f->tmp_name);
if( $w==0 || $h==0 ) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_invalidfile';
}
elseif( $tp!=IMAGETYPE_GIF && $tp!=IMAGETYPE_JPEG && $tp!=IMAGETYPE_PNG ) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_invalidformat';
}
else {
$fn = time().rand(100000,999999999).'.mp3';
$res = copy_background_cover($f->tmp_name, $fn);
if( ! $res) {
$D->error = TRUE;
$D->errmsg = 'st_avatar_err_cantcopy';
}
}
if( ! $D->error ) {
$old = $this->user->info->cover;
if( $old != "cover-nobck.gif" ) {
rm( $C->IMG_DIR.'music/'.$old );
}
$db2->query('UPDATE users SET pmusic="'.$db2->escape($fn).'" WHERE id="'.$this->user->id.'" LIMIT 1');
$this->user->info->cover = $fn;
$this->network->get_user_by_id($this->user->id, TRUE);

}
}
elseif( $this->param('del') == 'current' ) {
$old = $this->user->info->cover;

if( $old != "cover-nobck.gif" ) {
rm( $C->IMG_DIR.'music/'.$old );
$db2->query('UPDATE users SET pmusic="" WHERE id="'.$this->user->id.'" LIMIT 1');
$this->user->info->cover = "cover-nobck.gif";
$this->network->get_user_by_id($this->user->id, TRUE);
$D->msg = 'deleted';
}
}


function dirImages($dir) {
$d = dir($dir);
while (false!== ($file = $d->read()))
{
$extension = substr($file, strrpos($file, '.')); // Gets the File Extension
if($extension == ".mp3") // Extensions Allowed
$images[$file] = $file; // Store in Array
}
$d->close();
asort($images);
return $images;
}



function copy_background_cover($source, $fn)
{
global $C;
if( ! file_exists($source) ) {
return FALSE;
}
list($w, $h, $tp) = getimagesize($source);
if( $w==0 || $h==0 ) {
return FALSE;
}
if( $tp!=IMAGETYPE_GIF && $tp!=IMAGETYPE_JPEG && $tp!=IMAGETYPE_PNG ) {
return FALSE;
}
$fn0 = $C->IMG_DIR.'music/'.$fn;
if(move_uploaded_file($source, $fn0)){
chmod( $fn0, 0777 );
return true;
} else {
copy($source, $fn0);
chmod( $fn0, 0777 );
return true;
}
return FALSE;
}

مهرداد سیف زاده
چهارشنبه 16 بهمن 1392, 14:58 عصر
متاسفانه در دریای کدهای شما نمیتونم ماهیگیری کنم من وسایل ماهیگیری رو دادم بقیش رو خودتون باید خلاقیت داشته باشید و بتونید ماهی بگیرید

mbf5923
چهارشنبه 16 بهمن 1392, 15:14 عصر
من معذرت میخوام چون توی پست اولم اصلا سئوال شما رو متوجه نشده بودم
IMAGETYPE_GIF و غیره توابع پیشفرضی هستن که برای تصاویر به کار میرن و در مورد فایل های صوتی جوابگو نیستن
اولا در خط 19 از تابع getimagesize استفاده شده که خوب برای موزیک نمیشه استفاده کرد و باید تصحیح بشه
ثانیا در خط 24 باید نوع فایل به شکل زیر چک بشه:


elseif( $tp!='audio/mp3' && $tp!='audio/x-mp3'...

parmiscms
چهارشنبه 16 بهمن 1392, 15:14 عصر
فقط آپلود mp3 را بگید کدوم خط هست و اصلاح کنم ممنون میشم.
الان فرمت های تصویری را می گیره. mp3 آپلود نمی کنه

parmiscms
چهارشنبه 16 بهمن 1392, 15:17 عصر
مهرداد ممنون
mbf5923 (http://barnamenevis.org/member.php?94132-mbf5923) ممنون که کمک کردی
خط 19 را اصلاح کنم چی باید بزارم

list($w, $h, $tp) = getimagesize($dirname . $_POST['bck_picture_cover']);

بجای getimagesize که حجم مربوط به حجم فایل هست چی بزارم؟

mbf5923
چهارشنبه 16 بهمن 1392, 18:47 عصر
توی این خط باید پسوند فایل آپ شده رو بگیرید و داخل $tp قرار بدین
اصلا این کد رو از کجا آوردین؟چرا از صفر نمینویسید که این رو میخواید تغییر بدین؟