ZF2-根据完整路径在视图中显示图像



我已经设法将图像文件上传到ZF2中,并将完整路径存储在数据库中。路径看起来像这样:

/home/ubuntu/netbeansprojects/project/data/upload/event_5554a7b600c0f.jpg

项目结构是Zend骨架应用:

项目 数据 上传 event_5554a7b600c0f.jpg 模块 公共

在我的视图中,我致电:

     <img src="<?php echo $event->getImage(); ?>" class="img-thumbnail" alt="<?php echo $event->getTitle(); ?>" width="304" height="236"> </td>

$ event-> getimage()返回如前所述的完整文件位置。

如果我将同一图像存储在项目 民众 IMG 上传 event_5554a7b600c0f.jpg

和store/img/upload/event_5554a7b600c0f.jpg作为路径的工作。

我有两个问题:1.在Publi/IMG文件夹或顶级数据/上传文件夹中存储上传的图像文件的好策略是什么?2.如果是更好的策略,将文件存储在数据/上传中,我该如何显示图像?

谢谢!

我创建了一个模块htimgmodule,用于在Zend Framework中进行图像操作2。

这是一个简单输出图像的示例:

namespace ApplicatonController;
use ZendMvcControllerAbstractActionController;
use HtImgModuleViewModelImageModel;
class MyController extends AbstractActionController
{
    public function displayImageAction()
    {
        return new ImageModel('path/to/image');
    }
}

因此,将图像存储在公共文件夹中不是绝对必要的。但是,有绩效处罚。幸运的是,htimgmodule足够灵活,可以将图像缓存到Web根部,以便将缓存的图像直接从文件系统中提供。看看htimgmodule的文档。

如果图像是公开的,并且您很高兴网络上的任何人都可以看到它最容易保存在公共文件夹中。

当您可能考虑将其放入数据目录时,如果您需要保护用户名/密码或ACL等图像,等等。使用类似的响应;

$filesize = filesize($directory.$fileName);
$response = new ZendHttpResponseStream();
$response->setStream(fopen($directory.$fileName, 'r'));
$response->setStatusCode(200);
$headers = new ZendHttpHeaders();
$headers->addHeaderLine('Content-Type', $mimeType)
    ->addHeaderLine('Content-Disposition', 'attachment; filename="' . $fileName . '"')
    ->addHeaderLine('Content-Length', $filesize);
$response->setHeaders($headers);
return $response;

我想这确实为您的服务器增加了额外的负载。

最新更新