2014-04-03 32 views
0

我正在使用php脚本在用户上传支持文档时将PDF文件转换为图像。它工作得很好,但ocasionaly它会创建2个接近相同的文件并附加“-0”和“-1”。这引发了我的循环,因为我的脚本不知道什么时候发生,然后指向错误的文件名。任何想法是什么导致这一点,以及如何纠正将不胜感激。为什么在某些情况下将创建转换为文件?

这是代码:

$filename = $_FILES['file']['name']; 
    $filename1 = $upload_dir.$_FILES['file']['name']; 
    rename($_FILES['file']['tmp_name'], $upload_dir.$_FILES['file']['name']); 

    chmod($filename, 0777); 

    //If the file is a pdf change it to a jpg. 
    $file_array = explode(".", strtolower($filename)); 
    $file_jpg = $file_array[0]; 
    $file_jpg = $upload_dir.$file_jpg . ".jpg"; 
    $file_extn = end(explode(".", strtolower($filename))); 

    if($file_extn == 'pdf'){ 
    $filename3 = substr($filename1, 0, -3); 
    $filename3 = $filename3 . "jpg"; 
    $createjpgpath = $filename3; 
    $basefile_jpg = substr($filename, 0, -3) . "jpg"; 
    exec('convert -geometry 1600x1600 -density 130x130 -quality 20 "'.$filename1.'" "'.$filename3.'"'); 
    unlink($filename1); 

    } 
    Else{ 
    $filename3 = $upload_dir.$_FILES['file']['name']; 
    $basefile_jpg = $filename; 
    } 
+0

这是使用IMAGEMAGICK吗? – mathius1

+0

@mathius是的这使用IMAGEMAGICK –

+0

我看不到任何明显的会导致'exec('convert ...')'执行两次。这留下了两种可能性:这个代码被执行两次(多次提交?);或者用'convert'做些什么(这里是[手册页](http://linux.die.net/man/1/convert) - 我没有看到有关创建多个文件的任何信息)。 – Kryten

回答

2

这是我用:

exec('convert "'.$targetFile.'[0]" -flatten -geometry 1600x1600 -density 130x130 -quality 20 "'.$previewTargetFile.'"'); 

的 “[0]” 和 “-flatten” 将拼合文件和输出只有一个图像。一些PDF有多个页面。

+0

谢谢!!!!这工作完美 –

相关问题