我现在有一个脚本,适用于公司资源的FTP类型站点。
显示带有下载链接和文件名的图像。我想要做的是,如果文件不是图像(如pdf)显示占位符图像。
下面的代码不对(if / else语句),但你可以看到我的目的。
提前致谢。
<?php
// Find all files in that folder
$files = glob('files/*');
//$image =
// Do a natural case insensitive sort, usually 1.jpg and 10.jpg would come next to each other with a regular sort
natcasesort($files);
if ($files = array("gif", "jpeg", "jpg", "png");) {
$images = $file
} else {
$images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
// Display images
foreach($files as $file) {
echo '<div class="one_half"><img src="' . $images . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
}
?>
答案 0 :(得分:3)
这里有几个问题。
请注意比较运算符 - 您目前正在重新分配此行中的$ files数组:
if ($files = array("gif", "jpeg", "jpg", "png");) {
您正在以无意义的方式将$files
数组与另一个数组进行比较。你可能会构建一个单独的$ images数组,因为它看起来像你正在尝试做的,但这在foreach循环中会更好,例如:
foreach($files as $file) {
$filepath = pathinfo($file);
if (in_array($filepath['extension'], ('gif', 'jpeg', 'jpg', 'png')) {
$image = $file;
} else {
$image = 'http://hg.exbabylon.net/find_fitter/placeholder.jpg';
}
echo '<div class="one_half"><img src="' . $images . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
}
理想情况下,您应该查看mime类型而不是文件扩展名。在PHP 5.3中,完成如下:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mimetype = finfo_file($finfo, $file);
finfo_close($finfo);
然后,您可以根据(2)中的mime类型进行比较。
答案 1 :(得分:1)
<?php
$allowed_extensions = array("gif", "jpeg", "jpg", "png");
// use values as keys for lasier lookups
$allowed_extensions = array_combine($allowed_extensions, $allowed_extensions);
// Find all files in that folder
$files = glob('files/*');
// Do a natural case insensitive sort, usually 1.jpg and 10.jpg would come next to each other with a regular sort
natcasesort($files);
// Display images
foreach($files as $file) {
// split file name at "." and use last part as file extension
$file_parts = explode('.', $file);
$file_extension = array_pop($file_parts)
// check if file extensions is allowed
if($allowed_extensions[$file_extension]) {
$images = $file;
} else {
$images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
echo '<div class="one_half"><img src="' . $images . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
}
?>
答案 2 :(得分:1)
$allowed_extensions = array("gif", "jpeg", "jpg", "png");
$files = glob('files/*');
natcasesort($files);
foreach($files as $file){
if(!in_array(end(explode(".",$file)),$allowed_extensions)){
$image = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}else{
$image = $file;
}
echo '<div class="one_half"><img src="' . $image . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
}
答案 3 :(得分:0)
假设您的 $ files 只包含文件名+扩展名myimage.png
foreach($files as $file) {
$split = explode(".", $file);
$extension = array_pop($split);
if (in_array($extension, array('gif', 'jpeg', 'jpg', 'png'))) {
$images = $file;
} else {
$images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
//display your image
echo '<div ...';
}
答案 4 :(得分:0)
将其更改为此类
<?php
// Find all files in that folder
$files = glob('files/*');
// Do a natural case insensitive sort, usually 1.jpg and 10.jpg would come next to each other with a regular sort
natcasesort($files);
$extensions = array("gif", "jpeg", "jpg", "png");
// Display images
foreach($files as $file) {
$pi - pathinfo($file);
if(!in_array($pi['extension'], $extensions)) {
$file = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
echo '<div class="one_half"><img src="' . $file . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
}
?>
答案 5 :(得分:0)
您可以使用正则表达式和preg_match
函数:
if (preg_match("/.*\.gif|jpg|jpeg|png$/i", $files)) {
$images = $file
} else {
$images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
注意:最好检查mime类型(如果可能),因为文件名可以很容易地更改。