Проблема с файлами состоит из пробелов и одинарных кавычек? - PullRequest
0 голосов
/ 22 марта 2010

Я использовал следующий код для создания миниатюр с помощью ffmpeg, но он отлично работал для файлов, в которых нет пробелов или кавычек.

Но если в файле есть пробел (например, 'sachin knock.flv') или файлы с кавычками (например, sachin's_double_cent.mp4), он не работает ..

Что я могу сделать, чтобы эти файлы работали точно? Одно ограничение заключается в том, что я не могу переименовывать файлы, потому что они немного ..

Мой код

<?php
    error_reporting(E_ALL);
    extension_loaded('ffmpeg') or die('Error in loading ffmpeg');
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Not connected : ' . mysql_error());
    }
    $db_selected = mysql_select_db('db', $link);

    $max_width  = 120;
    $max_height = 72;
    $path ="/home/rootuser/public_html/temp/";
    $qry="select id, input_file, output_file from videos where thumbnail='' or thumbnail is null;";
    $res=mysql_query($qry);
    while($row = mysql_fetch_array($res,MYSQL_ASSOC))
    {
        $orig_str = array(" ");
        $rep_str  = array("\ ");
        $outfile  = $row[output_file];
//      $infile   = $row[input_file];
        $infile1  = str_replace($orig_str, $rep_str, $outfile);

        $tmp      = explode(".",$infile1);
        $tmp_name = $tmp[0];
        $imgname  = $tmp_name.".png";
        $srcfile  = "/home/rootuser/public_html/uploaded_vids/".$outfile;
            echo exec("ffmpeg -i ".$srcfile." -r 1 -ss 00:00:05 -f image2 -s 120x72 ".$path.$imgname);
        $nname = "./temp/".$imgname;
        $fileo = fopen($nname,"rb");
        if($fileo)
        {
        $imgData = addslashes(file_get_contents($nname));
        echo $imgdata;
        $qryy="update videos set thumbnail='{$imgData}' where input_file='$outfile'"; 
        $ress=mysql_query($qryy);
        }
        else
            echo "Could not open<br><br>";
        unlink('$nname');    
    }
?>

1 Ответ

2 голосов
/ 22 марта 2010

Обратите внимание, что если файлы предоставляются пользователями, ваш код не только не работает, но и открыт для внедрения кода.

Это можно решить с помощью escapeshellcmd().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...