Jump to content
php.lv forumi
Sign in to follow this  
ziedinjsh

Augšupielādējot mp3 convertēt uz flv

Recommended Posts

Svaiki!

 

šāds ir upload scripts

 

if(isset($_POST['addmp3'])){

$result = 0;
$folder = "../mp3/";
$artist = mysql_real_escape_string($_POST['artist']);
$title = mysql_real_escape_string($_POST['title']);
$lyricartist = mysql_real_escape_string($_POST['lyricartist']);
$type = $_POST['type'];

$beat = $_FILES['mp3']['name'];
$tmp = $_FILES['mp3']['tmp_name'];
$date = date('y.m.d');
$ip = $_POST['ip'];


$mp3 = $folder.basename($_FILES['mp3']['name']); 


 if($type == "audio/mpeg") {
 die("this format is not allowed or file is to big");
 }
 else
 {

$query = mysql_query("INSERT INTO beats (beat, title, artist, lyricartist, type, date, ip) VALUES ('$beat', '$title', '$artist', '$lyricartist', '$type', '$date', '$ip') ");
 if(move_uploaded_file($_FILES['mp3']['tmp_name'], $mp3)) {
     $result = 1;

  }
  sleep(1);
?>
<script language="javascript" type="text/javascript">window.top.window.stopUpload(<?php echo $result;  ?>);</script>
<?php  

  }

}

 

hostings piedāvā šo:

ffmpeg -y -i fails.mp3 -f flv -acodec libmp3lame -ab 64 -ac 1 uploads/fails.flv

 

kur un kā man jāievieto šis ffmpeg kods lai augšupielādējot mp3 viņš enkodējas uz flv formātu?

 

Paldies jau iepriekš

Share this post


Link to post
Share on other sites

Es redzu pāris sql injekciju ievainojamības...

Šos?

$beat = $_FILES['mp3']['name'];
$tmp = $_FILES['mp3']['tmp_name'];

Share this post


Link to post
Share on other sites

Nē,jo vienkārši nevar (varbūt maldos).

Šos paskaties

$type = $_POST['type'];
$ip = $_POST['ip'];

Edited by gta1151

Share this post


Link to post
Share on other sites

To ziedinjsh

Uztaisi vel vienu if kur ir pārbaude vai fails ir mp3 un apmēram izmēru,jo piemēram tagad tava kodā varēs ievietot exe failu un 300mb mp3 formātu failu.

Share this post


Link to post
Share on other sites

Daudz vērtīgu padomu, bet neviens neatbild uz autora pamatjautājumu. :)

 

Pats neko tādu neesmu taisījis, bet šķiet ka tā lieta strādā tikai no komandrindas, tāpēc jāizpilda kā ārēja programma. Tad, kad fails tiks augšupielādēts, izpildi ffmpeg kā ārējo programmu uz atbilstošo, tikko augšupielādēto, failu. Izsaukt ārējo programmu varētu ar exec un system, papēti šīs funkcijas. Jā un ņem vērā arī ieteikumus par drošības uzlabošanu, ka jau šeit minēja.

Share this post


Link to post
Share on other sites

Parasti video/audio failu ielādi veic aptuveni šādi:

 

1. pie augšupielādes ieliec konkrēto failu kādā mysql tabulā, kurā tu glabāsi apstrādājamos failus

2. uztaisi skriptu, kas fonā ik pēc mirkļa pārbauda vai šajā tabulā nav iekritis kāds fails. Sliktākajā gadījumā ar crontab skriptu, kas darbojas reizi minūtē. Labākajā gadījumā, ja tev ir pieeja pie shella, tad vienkārši palaid no konsoles skriptu

while(1){
   // pārbaudam vai nav kāds konvertējams fails, ja ir tad nokonvertējam
   sleep(10)
}

3. Fona procesā failam, kuru tu esi paņēmis uz apstrādi uzseto kaut kādu statusu, ka tas tiek apstrādāts

4. Publiskajā pusē zinot faila ID tu vari parādīt lietotājam, ka fails šobrīd tiek apstrādāts / failam priekšā vēl ir N citi faili.

 

 

Ja tu liksi šo ffmpeg konvertēšanu pa taisno upload skriptā, tad vari jau sākt raut matus nost no galvas un skaidrot cilvēkiem, ka viss notiek, ka viss strādā, tikai viss ir ļoti lēni. Tb konvertēšana manuprāt ir OBLIGĀTI jānodala no augšupielādes.

Share this post


Link to post
Share on other sites

Kaklz, tieši tā, ja pieejams crontab, tad labāk izmantot pieeju, ko Tu piedāvā, bet ja nav tad gan jādomā citi varianti. Šķiet bij arī kaut kādas metodes kā fonā palaist php skriptu, bez crontab, sanāk pa mūžīgo ciklu, bet iespējams es to rakstu nepareizi sapratu un arī īpaši neapskatīju uzmanīgi, nebija vajadzība, tā ka iespējams kļūdos. Pašam gan ir nācies taisīt sistēmas kur faila pēcapstrāde, pēc augšupielādēšanas, aizņem kādu laiciņu un jā, tieši tā arī darīju, rakstīju paziņojumu: "Fails tiek apstrādāts, lūdzu uzgaidiet".

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...