我使用以下代码使用 ffmpeg 创建缩略图,但它对于没有空格或任何引号的文件工作正常。
但是当文件有空格(如 'sachin knock.flv')或文件有引号(如 sachin's_double_cent.mp4)时,它不起作用..
我该怎么做才能让这些文件准确工作?一个限制是我不能重命名文件,因为它们是 block 状的。
我的代码是
<?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');
}
?>
最佳答案
请注意,如果文件是由用户提供的,您的代码不仅不起作用,而且对代码注入(inject)开放。
这可以通过使用 escapeshellcmd()
来解决.
关于php - 文件问题由空格和单引号组成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2491135/