Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Service.php
Go to the documentation of this file.
1 <?php
9 
13 
14 class Service
15 {
21  protected $_filePath;
22 
26  protected $_tmpDirectory;
27 
33  protected $_fileSize;
34 
40  protected $dataSize;
41 
47  protected $_uploader;
48 
52  protected $_uploaderFactory;
53 
57  protected $_cssUploadLimit;
58 
62  protected $_jsUploadLimit;
63 
73  public function __construct(
74  \Magento\Framework\Filesystem $filesystem,
75  \Magento\Framework\File\Size $fileSize,
76  \Magento\Framework\Convert\DataSize $dataSize,
77  \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory,
78  array $uploadLimits = []
79  ) {
80  $this->_tmpDirectory = $filesystem->getDirectoryRead(DirectoryList::SYS_TMP);
81  $this->_fileSize = $fileSize;
82  $this->_uploaderFactory = $uploaderFactory;
83  $this->dataSize = $dataSize;
84  if (isset($uploadLimits['css'])) {
85  $this->_cssUploadLimit = $uploadLimits['css'];
86  }
87  if (isset($uploadLimits['js'])) {
88  $this->_jsUploadLimit = $uploadLimits['js'];
89  }
90  }
91 
99  public function uploadCssFile($file)
100  {
102  $fileUploader = $this->_uploaderFactory->create(['fileId' => $file]);
103  $fileUploader->setAllowedExtensions(['css']);
104  $fileUploader->setAllowRenameFiles(true);
105  $fileUploader->setAllowCreateFolders(true);
106 
107  $isValidFileSize = $this->_validateFileSize($fileUploader->getFileSize(), $this->getCssUploadMaxSize());
108  if (!$isValidFileSize) {
109  throw new \Magento\Framework\Exception\LocalizedException(
110  __('The CSS file must be less than %1M.', $this->getCssUploadMaxSizeInMb())
111  );
112  }
113 
114  $file = $fileUploader->validateFile();
115  return ['filename' => $file['name'], 'content' => $this->getFileContent($file['tmp_name'])];
116  }
117 
125  public function uploadJsFile($file)
126  {
128  $fileUploader = $this->_uploaderFactory->create(['fileId' => $file]);
129  $fileUploader->setAllowedExtensions(['js']);
130  $fileUploader->setAllowRenameFiles(true);
131  $fileUploader->setAllowCreateFolders(true);
132 
133  $isValidFileSize = $this->_validateFileSize($fileUploader->getFileSize(), $this->getJsUploadMaxSize());
134  if (!$isValidFileSize) {
135  throw new \Magento\Framework\Exception\LocalizedException(
136  __('The JS file must be less than %1M.', $this->getJsUploadMaxSizeInMb())
137  );
138  }
139 
140  $file = $fileUploader->validateFile();
141  return ['filename' => $file['name'], 'content' => $this->getFileContent($file['tmp_name'])];
142  }
143 
150  public function getFileContent($filePath)
151  {
152  return $this->_tmpDirectory->readFile($this->_tmpDirectory->getRelativePath($filePath));
153  }
154 
160  public function getCssUploadMaxSize()
161  {
162  return $this->_getMaxUploadSize($this->_cssUploadLimit);
163  }
164 
170  public function getJsUploadMaxSize()
171  {
172  return $this->_getMaxUploadSize($this->_jsUploadLimit);
173  }
174 
181  private function _getMaxUploadSize($configuredLimit)
182  {
183  $maxIniUploadSize = $this->_fileSize->getMaxFileSize();
184  if ($configuredLimit === null) {
185  return $maxIniUploadSize;
186  }
187  $maxUploadSize = $this->dataSize->convertSizeToBytes($configuredLimit);
188  return min($maxUploadSize, $maxIniUploadSize);
189  }
190 
196  public function getCssUploadMaxSizeInMb()
197  {
198  return $this->_fileSize->getFileSizeInMb($this->getCssUploadMaxSize());
199  }
200 
206  public function getJsUploadMaxSizeInMb()
207  {
208  return $this->_fileSize->getFileSizeInMb($this->getJsUploadMaxSize());
209  }
210 
218  protected function _validateFileSize($fileSize, $maxFileSize)
219  {
220  if ($fileSize > $maxFileSize) {
221  return false;
222  }
223  return true;
224  }
225 }
__()
Definition: __.php:13
__construct(\Magento\Framework\Filesystem $filesystem, \Magento\Framework\File\Size $fileSize, \Magento\Framework\Convert\DataSize $dataSize, \Magento\MediaStorage\Model\File\UploaderFactory $uploaderFactory, array $uploadLimits=[])
Definition: Service.php:73
_validateFileSize($fileSize, $maxFileSize)
Definition: Service.php:218
$filesystem