Answers:
我制作了一个简单的模块,以允许在所见即所得编辑器中使用其他文件类型。该模块可从GitHub https://github.com/experius/Magento-2-Module-Experius-Wysiwyg下载
我偶然发现了相同的问题,并想出了一个现成的解决方案,只需要ftp / sftp-access:
另外:您必须启用wysywig编辑器中显示pdf。使用di.xml创建一个简单的模块,该模块将“ pdf”添加到允许的文件扩展名中,如下所示:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
<arguments>
<argument name="extensions" xsi:type="array">
<item name="allowed" xsi:type="array">
<item name="pdf" xsi:type="number">1</item>
</item>
<item name="image_allowed" xsi:type="array">
<item name="pdf" xsi:type="number">1</item>
</item>
</argument>
</arguments>
</type>
</config>
您可以在允许的扩展部分中添加“ pdf”,vendor/magento/module-cms/etc/di.xml
如下所示:
<item name="allowed" xsi:type="array">
<item name="jpg" xsi:type="number">1</item>
<item name="jpeg" xsi:type="number">1</item>
<item name="png" xsi:type="number">1</item>
<item name="gif" xsi:type="number">1</item>
<item name="pdf" xsi:type="number">1</item>
</item>
我有Magento 2.1.x,必须使用自定义模块覆盖cms模块中的设置并启用pdf上传。在这里,您如何完成它。
我找到了此解决方案,您可以将任何文件类型上传到“产品页面”。
参见https://www.mageplaza.com/blog/how-upload-product-attachments-magento-2.html
用于创建模块,您应该像这样的创建者使用[ http://schogini.biz/magento_module_builder/]
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
<arguments>
<argument name="extensions" xsi:type="array">
<item name="allowed" xsi:type="array">
<item name="pdf" xsi:type="number">1</item>
</item>
</argument>
</arguments>
</type>
</config>
您应该创建一些基本模块,并在di xml上放置此代码。对我来说正在工作。
您永远不要修改Magento核心代码,因为在我们升级时,我们的代码不会随之升级。依赖于同一类的扩展将不再起作用,并且补丁程序将无法获得预期的结果。
另外...如果要将pdf添加到Magento中的“允许的文件类型”,则可以使用此参考,通过添加一个简单的配置文件来提供逐步说明,该配置文件包括文件类型以及默认类型和模块开启/关闭此功能。
在自定义模块中创建di.xml,并将以下代码粘贴到di.xml中。这将允许用户在管理员所见即所得编辑器中上载pdf。
<type name="Magento\Cms\Model\Wysiwyg\Images\Storage">
<arguments>
<argument name="resizeParameters" xsi:type="array">
<item name="height" xsi:type="number">75</item>
<item name="width" xsi:type="number">100</item>
</argument>
<argument name="extensions" xsi:type="array">
<item name="allowed" xsi:type="array">
<item name="jpg" xsi:type="string">image/jpg</item>
<item name="jpeg" xsi:type="string">image/jpeg</item>
<item name="png" xsi:type="string">image/png</item>
<item name="gif" xsi:type="string">image/gif</item>
<item name="pdf" xsi:type="string">application/pdf</item>
</item>
<item name="image_allowed" xsi:type="array">
<item name="jpg" xsi:type="string">image/jpg</item>
<item name="jpeg" xsi:type="string">image/jpeg</item>
<item name="png" xsi:type="string">image/png</item>
<item name="gif" xsi:type="string">image/gif</item>
</item>
<item name="media_allowed" xsi:type="array">
<item name="flv" xsi:type="string">video/x-flv</item>
<item name="avi" xsi:type="string">video/x-msvideo</item>
<item name="mov" xsi:type="string">video/x-sgi-movie</item>
<item name="rm" xsi:type="string">application/vnd.rn-realmedia</item>
<item name="wmv" xsi:type="string">video/x-ms-wmv</item>
<item name="pdf" xsi:type="string">application/pdf</item>
</item>
</argument>
<argument name="dirs" xsi:type="array">
<item name="exclude" xsi:type="array">
<item name="captcha" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+captcha[/\\]*$</item>
</item>
<item name="catalog/product" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+catalog[/\\]+product[/\\]*$</item>
</item>
<item name="customer" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+customer[/\\]*$</item>
</item>
<item name="downloadable" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+downloadable[/\\]*$</item>
</item>
<item name="import" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+import[/\\]*$</item>
</item>
<item name="theme" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+theme[/\\]*$</item>
</item>
<item name="theme_customization" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+theme_customization[/\\]*$</item>
</item>
<item name="tmp" xsi:type="array">
<item name="regexp" xsi:type="boolean">true</item>
<item name="name" xsi:type="string">pub[/\\]+media[/\\]+tmp[/\\]*$</item>
</item>
</item>
<item name="include" xsi:type="array"/>
</argument>
</arguments>
</type>
之后,覆盖Magento \ Cms \ Model \ Wysiwyg \ Images \ Storage文件,并添加以下代码,以避免在上传图像后显示错误。
if (strtolower($uploader->getFileExtension()) !== 'pdf') {
$this->resizeFile($targetPath . '/' . $uploader->getUploadedFileName(), true);
}
添加if条件代码,以避免调整PDF文件的大小。下面是我们需要添加以上代码的函数。
public function uploadFile($targetPath, $type = null)
{
if (!$this->isPathAllowed($targetPath, $this->getConditionsForExcludeDirs())) {
throw new \Magento\Framework\Exception\LocalizedException(
__('We can\'t upload the file to current folder right now. Please try another folder.')
);
}
/** @var \Magento\MediaStorage\Model\File\Uploader $uploader */
$uploader = $this->_uploaderFactory->create(['fileId' => 'image']);
$allowed = $this->getAllowedExtensions($type);
if ($allowed) {
$uploader->setAllowedExtensions($allowed);
}
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(false);
if (!$uploader->checkMimeType($this->getAllowedMimeTypes($type))) {
throw new \Magento\Framework\Exception\LocalizedException(__('File validation failed.'));
}
$result = $uploader->save($targetPath);
if (!$result) {
throw new \Magento\Framework\Exception\LocalizedException(__('We can\'t upload the file right now.'));
}
// create thumbnail
if (strtolower($uploader->getFileExtension()) !== 'pdf') {
$this->resizeFile($targetPath . '/' . $uploader->getUploadedFileName(), true);
}
return $result;
}
谢谢