Magento2:如何在所见即所得上启用pdf以将附件上传到产品?


Answers:


12

我制作了一个简单的模块,以允许在所见即所得编辑器中使用其他文件类型。该模块可从GitHub https://github.com/experius/Magento-2-Module-Experius-Wysiwyg下载


不错。在2.1.10上工作正常
vbak

@先生。Lewis可以使用.stl文件格式吗?以及如何在magento 2上安装它?有手册吗?
短暂

您可以在自述中找到它
刘易斯先生

我没有安装手册
学习者

仍适用于2.3.2
Julime '19

4

我偶然发现了相同的问题,并想出了一个现成的解决方案,只需要ftp / sftp-access:

  • 将pdf图标(类似Adobe PDF图标)上载到文件夹(例如,命名为“ pdf”)
  • 通过ftp / sftp将所有pdf文件上传到同一文件夹(在/ [webroot] / pub / media / wysiwyg / pdf下(如果您将文件夹命名为“ pdf”))
  • 如果要链接到pdf,请嵌入图标,并在图标周围放置一个指向该pdf的链接。而已。

另外:您必须启用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>

不为我工作。
Sarfaraj Sipai '18

3

您可以在允许的扩展部分中添加“ 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>

1
确保您应该创建一个模块并在那里覆盖di.xml
Varun Jyothi

1
那对我不起作用...:((已清除缓存)
Karol F

1
还要确保您的php.ini的upload_max_filesize值足够高。如果此值太低,您将在Magento中看不到任何错误。PDF的大小通常可以大于图像。
安东·埃弗斯



0

用于创建模块,您应该像这样的创建者使用[ 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上放置此代码。对我来说正在工作。


0

您永远不要修改Magento核心代码,因为在我们升级时,我们的代码不会随之升级。依赖于同一类的扩展将不再起作用,并且补丁程序将无法获得预期的结果。

不修改核心代码

另外...如果要将pdf添加到Magento中的“允许的文件类型”,则可以使用此参考,通过添加一个简单的配置文件来提供逐步说明,该配置文件包括文件类型以及默认类型和模块开启/关闭此功能。

将pdf添加为Magento中的允许文件类型


0

在自定义模块中创建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;
}

谢谢


0

在di.xml中使用此代码可以正常工作

应用程序/ zip应用程序/ pdf

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.