Uploader.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\MediaStorage\Model\File;
  7. /**
  8. * Core file uploader model
  9. *
  10. * @api
  11. * @since 100.0.2
  12. */
  13. class Uploader extends \Magento\Framework\File\Uploader
  14. {
  15. /**
  16. * Flag, that defines should DB processing be skipped
  17. *
  18. * @var bool
  19. */
  20. protected $_skipDbProcessing = false;
  21. /**
  22. * Core file storage
  23. *
  24. * @var \Magento\MediaStorage\Helper\File\Storage
  25. */
  26. protected $_coreFileStorage = null;
  27. /**
  28. * Core file storage database
  29. *
  30. * @var \Magento\MediaStorage\Helper\File\Storage\Database
  31. */
  32. protected $_coreFileStorageDb = null;
  33. /**
  34. * @var \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension
  35. */
  36. protected $_validator;
  37. /**
  38. * @param string $fileId
  39. * @param \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb
  40. * @param \Magento\MediaStorage\Helper\File\Storage $coreFileStorage
  41. * @param \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $validator
  42. */
  43. public function __construct(
  44. $fileId,
  45. \Magento\MediaStorage\Helper\File\Storage\Database $coreFileStorageDb,
  46. \Magento\MediaStorage\Helper\File\Storage $coreFileStorage,
  47. \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $validator
  48. ) {
  49. $this->_coreFileStorageDb = $coreFileStorageDb;
  50. $this->_coreFileStorage = $coreFileStorage;
  51. $this->_validator = $validator;
  52. parent::__construct($fileId);
  53. }
  54. /**
  55. * Save file to storage
  56. *
  57. * @param array $result
  58. * @return $this
  59. */
  60. protected function _afterSave($result)
  61. {
  62. if (empty($result['path']) || empty($result['file'])) {
  63. return $this;
  64. }
  65. if ($this->_coreFileStorage->isInternalStorage() || $this->skipDbProcessing()) {
  66. return $this;
  67. }
  68. $this->_result['file'] = $this->_coreFileStorageDb->saveUploadedFile($result);
  69. return $this;
  70. }
  71. /**
  72. * Getter/Setter for _skipDbProcessing flag
  73. *
  74. * @param null|bool $flag
  75. * @return bool|\Magento\MediaStorage\Model\File\Uploader
  76. */
  77. public function skipDbProcessing($flag = null)
  78. {
  79. if ($flag === null) {
  80. return $this->_skipDbProcessing;
  81. }
  82. $this->_skipDbProcessing = (bool)$flag;
  83. return $this;
  84. }
  85. /**
  86. * Check protected/allowed extension
  87. *
  88. * @param string $extension
  89. * @return boolean
  90. */
  91. public function checkAllowedExtension($extension)
  92. {
  93. //validate with protected file types
  94. if (!$this->_validator->isValid($extension)) {
  95. return false;
  96. }
  97. return parent::checkAllowedExtension($extension);
  98. }
  99. /**
  100. * Get file size
  101. *
  102. * @return int
  103. */
  104. public function getFileSize()
  105. {
  106. return $this->_file['size'];
  107. }
  108. /**
  109. * Validate file
  110. *
  111. * @return array
  112. */
  113. public function validateFile()
  114. {
  115. $this->_validateFile();
  116. return $this->_file;
  117. }
  118. }