2016-01-19 140 views
0

如何獲取Magento2中媒體文件的絕對路徑? 我寫了一個函數來獲取絕對路徑,但它不工作。Magento2中的絕對路徑

public function getAbsolutePath() 
    { 
     $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
     /** @var \Magento\Framework\Filesystem $filesystem */ 
     $filesystem = $objectManager->get('Magento\Framework\Filesystem'); 
     /** @var \Magento\Framework\Filesystem\Directory\WriteInterface $mediaDirectory */ 
     $mediaDirectory = $filesystem->getDirectoryWrite(Magento\Framework\App\Filesystem\DirectoryList::MEDIA); 
     $mediaPath = $mediaDirectory->getAbsolutePath(); 
     return $mediaPath; 
    } 

回答

7

應用程序/ autoloader.php

包含:

/** 
* Shortcut constant for the root directory 
*/ 
define('BP', dirname(__DIR__)); 

有人會做這樣的事情:

$mediaPath = BP.'/pub/media/'; 

這就是說,通過依賴注入的Magento \框架\文件系統是我的首選方法

2
/* @var \Magento\Framework\ObjectManagerInterface $om/

$om = \Magento\Framework\App\ObjectManager::getInstance(); 

$dir = $om->get('Magento\Framework\Filesystem'); 

$mediadir = $dir->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA); 

$path = $mediadir->create('foldername'); 

試試它的工作對我來說..

-3
$rootDirectory = Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\Filesystem') 
        ->getDirectoryRead(DirectoryList::MEDIA); 
+2

你能解釋一下你的答案嗎? [來自評論](http://stackoverflow.com/review/low-quality-posts/11855039) –

0

首先,你需要注入DirectoryList類:

public function __construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\App\Filesystem\DirectoryList $directoryList, array $data = []) { 
     parent::__construct($context, $data); 
     $this->directory_list = $directoryList; 
    } 

之後,你將使用檢索DirectoryList方法不同的路徑,如:

對於根文件夾

$this->directoryList->getRoot(); 

對於媒體文件夾

$this->directory_list->getPath('media'); 

其他文件夾

// Get app folder 
$this->directory_list->getPath('app'); 

// Get etc Folder 
$this->directory_list->getPath('etc'); 

// Get public folder 
$this->directory_list->getPath('pub'); 

// Get var folder 
$this->directory_list->getPath('var'); 
0

您可以使用此:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$fileSystem = $om->get('Magento\Framework\Filesystem'); 
$mediaDirectory = $fileSystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA); 
2

你可以用它來獲得在Magento 2媒體和基本絕對路徑,如:

$storeManager = $_objectMedia->get('Magento\Store\Model\StoreManagerInterface'); 
$currentStore = $storeManager->getStore(); 

$mediaUrl = $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA); 

$_baseurl = $storeManager->getStore()->getBaseUrl(); 

試試吧,對我來說工作很好....

+1

右....... code –