- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个由两个内部项目组成的 Symfony 项目。 ONE 项目和 MARKETPLACE 项目。以下是文件在网络中的结构。
web/
---one/ #this one is being called from subdomain one.domain.com
------/app_dev.php
---marketplace/ #this one is being called from the main domain domain.com
------/app_dev.php
现在我有了第三个文件夹
---/images
我想让用户从 ONE 上传图片并显示在 MARKETPLACE这是我的配置
# LiipImagineBundle
liip_imagine:
resolvers:
default:
web_path:
web_root: %kernel.root_dir%/../../web/images
cache_prefix: media/cache
filter_sets:
cache: ~
image_xlarge:
filters:
thumbnail: { size: [1080, 708], mode: outbound }
image_large:
filters:
thumbnail: { size: [535, 351], mode: outbound }
thumb_large:
filters:
thumbnail: { size: [400, 262], mode: outbound }
thumb_medium:
filters:
thumbnail: { size: [264, 173], mode: outbound }
thumb_small:
filters:
thumbnail: { size: [250, 164], mode: outbound }
thumb_xsmall:
filters:
thumbnail: { size: [175, 115], mode: outbound }
square_large:
filters:
thumbnail: { size: [500, 500], mode: outbound }
square_medium:
filters:
thumbnail: { size: [250, 250], mode: outbound }
square_small:
filters:
thumbnail: { size: [100, 100], mode: outbound }
square_xsmall:
filters:
thumbnail: { size: [50, 50], mode: outbound }
# VichUploaderBundle
vich_uploader:
db_driver: orm
mappings:
library_media:
uri_prefix: /media/library
upload_destination: %kernel.root_dir%/../../web/images/media/library
inject_on_load: false
这是图片的模型
namespace CoreBundle\Models;
use CoreBundle\Entity\ServiceCategory;
use CoreBundle\Entity\ServiceProvider;
use CoreBundle\Entity\ServiceProviderUserTypeEnum;
use CoreBundle\Entity\MediaItem;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\HttpFoundation\Request;
/**
* Class MediaItem
*
* @package CoreBundle\Models
*/
class MediaItemModel extends AbstractModel
{
private $liipImagineController;
private $liipImagineCacheManager;
/**
* @param $liipImagineController
*/
public function setLiipController($liipImagineController)
{
$this->liipImagineController = $liipImagineController;
}
/**
* @param $liipImagineCacheManager
*/
public function setLiipCacheManager($liipImagineCacheManager)
{
$this->liipImagineCacheManager = $liipImagineCacheManager;
}
/**
* Get path for media item file
*
* @param MediaItem $mediaItem
* @param $size
* @return string
*/
public function getMediaItemFile(MediaItem $mediaItem, $size)
{
$fileName = '/../../web/images/media/library/' . $mediaItem->getName();
if ($mediaItem->getServiceProvider()) {
$fileName = '/../../web/images/media/serviceprovider/' . $mediaItem->getId() . '/' . $mediaItem->getName();
}
$this->liipImagineController
->filterAction(new Request(), $fileName, $size);
$this->liipImagineCacheManager->getBrowserPath($fileName, $size);
$result = '/../../web/images/media/cache/' . $size . '/media/library/' . $mediaItem->getName();
if ($mediaItem->getServiceProvider()) {
$result = '/../../web/images/media/cache/' . $size . '/media/serviceprovider/' . $mediaItem->getId() . '/' . $mediaItem->getName();
}
// $result = '/../../web/images/media/serviceprovider/' . $mediaItem->getId() . '/' . $mediaItem->getName();
return $result;
}
/**
* Get all items for ServiceCategory
*
* @param ServiceCategory $serviceCategory
* @return array
*/
public function getAllForServiceCategory(ServiceCategory $serviceCategory)
{
return $this->repository
->createQueryBuilder('i')
->where('i.serviceCategory = :serviceCategory')
->setParameter('serviceCategory', $serviceCategory)
->getQuery()
->getResult();
}
/**
* Get medias for service provider
*
* @param ServiceProvider $serviceProvider
*
* @return ArrayCollection
*/
public function getAllForServiceProvider(ServiceProvider $serviceProvider)
{
return $this->repository
->createQueryBuilder('m')
->where('m.serviceProvider = :serviceProvider')
->setParameter('serviceProvider', $serviceProvider)
->getQuery()
->getResult();
}
/**
* Get general media items
*
* @param ServiceCategory $serviceCategory
*
* @return ArrayCollection
*/
public function getGeneralMediaItems(ServiceCategory $serviceCategory = null)
{
$query = $this->repository
->createQueryBuilder('m')
->where('m.serviceProvider IS NULL');
if ($serviceCategory) {
$query->andWhere('m.serviceCategory = :serviceCategory')
->setParameter('serviceCategory', $serviceCategory);
}
return $query->getQuery()->getResult();
}
/**
* Post new image to ServiceProvider
*
* @param ServiceProvider $serviceProvider
* @param $file
* @param string $rootDir
*
* @return MediaItem
*/
public function postImage(ServiceProvider $serviceProvider, $file, $rootDir)
{
if ($file && $file->getPathName()) {
$newFileName = $file->getClientOriginalName();
$image = new MediaItem();
$image->setServiceProvider($serviceProvider);
$image->setTitle($newFileName);
$image->setName($newFileName);
$this->em->persist($image);
$this->em->flush();
$newPath = '/media/serviceprovider/' . $image->getId();
if (!is_dir($rootDir . '/../../web/images' . $newPath)) {
mkdir($rootDir . '/../../web/images' . $newPath, 0777, true);
}
move_uploaded_file($file->getPathName(), $rootDir . '/../../web/images' . $newPath . '/' . $newFileName);
return $image;
}
}
}
/**
* @Route\Get("/item/{mediaItemId}/{size}",
* defaults={"size" = "original"},
* options={"expose"=true},
* requirements={
* "size": "image_xlarge|image_large|thumb_large|thumb_medium|thumb_small|thumb_xsmall|square_large|square_medium|square_small|square_xsmall"
* }))
*
* @ParamConverter("mediaItem", class="CoreBundle:MediaItem", options={"id" = "mediaItemId"})
*
* @param MediaItem $mediaItem
* @param string $size
*
* @return Response
*/
public function getMediaItemAction(MediaItem $mediaItem, $size)
{
if ($mediaItem->getServiceProvider()) {
$this->denyAccessUnlessGranted('view', $mediaItem->getServiceProvider());
}
$filePath = $this->get('media_item_model')->getMediaItemFile($mediaItem, $size);
$filePath = $this->get('kernel')->getRootDir() . '/../../web/images/' . $filePath;
$headers = array(
'Content-Type' => 'image/jpeg',
);
return new BinaryFileResponse($filePath, 200, $headers);
}
现在问题如下如果我将 ONE 项目隔离到一个普通的 symfony 项目中并重新制作文件夹以指向 web 文件夹而不是图像,然后尝试上传可通过 connect_api_media_getgeneralmedias 访问的图像,我可以看到缩略图和所有内容,就像这个 domain.com/api/330/thumb_medium但是 2 个项目设置发生的事情是创建了 media/serviceprovider/330/image.jpeg 但没有缓存或库文件夹所以我不能真正使用 liib 库出于某种原因来使用缩略图功能。
知道为什么会这样吗?
附言。权限都很好附言。 gd 库已安装并正常工作
如需更多代码,请告诉我。
最佳答案
在 getMediaItemFile
中,添加 liip_imagine.data.manager
和 liip_imagine.filter.manager
作为依赖项,然后尝试:
if (!$this-> liipImagineCacheManager->isStored($filePath, $size)) {
$binary = $this->dataManager->find($size, $filePath);
$filteredBinary = $this->filterManager->applyFilter($binary, $size);
// This should store the thumbnail in web/images/media/cache
$this->liipImagineCacheManager->store($filteredBinary, $filePath, $filterName);
}
// or similar
return $this->liipImagineCacheManager->resolve($filePath, $filterName);
这只是让您更明确地存储到 liip 缓存文件夹,例如在您的 web/images
文件夹中。
(无关紧要的小点 - 您可以考虑将 getMediaItemFile
分解为您调用以解析图像的服务。它在实体模型类中有点不合适。)
关于php - liip_imagine with vich_uploader 不创建缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39836143/
我阅读了有关 JSR 107 缓存 (JCache) 的内容。 我很困惑:据我所知,每个 CPU 都管理其缓存内存(无需操作系统的任何帮助)。 那么,为什么我们需要 Java 缓存处理程序? (如果C
好吧,我是 jQuery 的新手。我一直在这里和那里搞乱一点点并习惯它。我终于明白了(它并不像某些人想象的那么难)。因此,鉴于此链接:http://jqueryui.com/sortable/#dis
我正在使用 Struts 2 和 Hibernate。我有一个简单的表,其中包含一个日期字段,用于存储有关何时发生特定操作的信息。这个日期值显示在我的 jsp 中。 我遇到的问题是hibernate更
我有点不确定这里发生了什么,但是我试图解释正在发生的事情,也许一旦我弄清楚我到底在问什么,就可能写一个更好的问题。 我刚刚安装了Varnish,对于我的请求时间来说似乎很棒。这是一个Magneto 2
解决 Project Euler 的问题后,我在论坛中发现了以下 Haskell 代码: fillRow115 minLength = cache where cache = ((map fill
我正试图找到一种方法来为我网络上的每台计算机缓存或存储某些 python 包。我看过以下解决方案: pypicache但它不再被积极开发,作者推荐 devpi,请参见此处:https://bitbuc
我想到的一个问题是可以从一开始就缓存网络套接字吗?在我的拓扑中,我在通过双 ISP 连接连接到互联网的 HAProxy 服务器后面有 2 个 Apache 服务器(带有 Google PageSpee
我很难说出不同缓存区域 (OS) 之间的区别。我想简要解释一下磁盘\缓冲区\交换\页面缓存。他们住在哪里?它们之间的主要区别是什么? 据我了解,页面缓存是主内存的一部分,用于存储从 I/O 设备获取的
1.题目 请你为最不经常使用(LFU)缓存算法设计并实现数据结构。 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象 in
1.题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: ① LRUCache(int capacity) 以正整数作为容量 capacity
我想在访问该 View 时关闭某些页面的缓存。它适用于简单查询模型对象的页面。 好像什么时候 'django.middleware.cache.FetchFromCacheMiddleware', 启
documents为 ExePackage element state Cache属性的目的是 Whether to cache the package. The default is "yes".
我知道 docker 用图层存储每个图像。如果我在一台开发服务器上有多个用户,并且每个人都在运行相同的 Dockerfile,但将镜像存储为 user1_myapp . user2 将其存储为 use
在 Codeigniter 中没有出现缓存问题几年后,我发现了一个问题。我在其他地方看到过该问题,但没有适合我的解决方案。 例如,如果我在 View 中更改一些纯 html 文本并上传新文件并按 F5
我在 Janusgraph 文档中阅读了有关 Janusgraph Cache 的内容。关于事务缓存,我几乎没有怀疑。我在我的应用程序中使用嵌入式 janusgrah 服务器。 如果我只对例如进行读取
我想知道是否有来自终端的任何命令可以用来匹配 Android Studio 中执行文件>使缓存无效/重新启动的使用。 谢谢! 最佳答案 According to a JetBrains employe
我想制作一个 python 装饰器来内存函数。例如,如果 @memoization_decorator def add(a, b, negative=False): print "Com
我经常在 jQuery 事件处理程序中使用 $(this) 并且从不缓存它。如果我愿意的话 var $this = $(this); 并且将使用变量而不是构造函数,我的代码会获得任何显着的额外性能吗?
是的,我要说实话,我不知道varnish vcl,我可以解决一些基本问题,但是我不太清楚,这就是为什么我遇到问题了。 我正在尝试通过http请求设置缓存禁止,但是该请求不能通过DNS而是通过 Varn
在 WP 站点上加载约 4000 个并发用户时遇到此问题。 这是我的配置: F5 负载均衡器 ---> Varnish 4,8 核,32 Gb RAM ---> 9 个后端,4 个核,每个 16 RA
我是一名优秀的程序员,十分优秀!