My UI component form fieldset

<field name="file">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">string</item>
                    <item name="source" xsi:type="string">template</item>
                    <item name="label" xsi:type="string" translate="true">File</item>
                    <item name="dataScope" xsi:type="string">file</item>
                    <item name="visible" xsi:type="boolean">true</item>
                    <item name="formElement" xsi:type="string">fileUploader</item>
                    <item name="elementTmpl" xsi:type="string">ui/form/element/uploader/uploader</item>
                    <item name="previewTmpl" xsi:type="string">Kensium_Onlineguide/image-preview</item>
                    <item name="required" xsi:type="boolean">false</item>
                    <item name="uploaderConfig" xsi:type="array">
                        <item name="url" xsi:type="url" path="cms/onlineguide/savefile"/>

And admin controller execute method

public function execute()
        try {
            $result = $this->imageUploader->saveFileToTmpDir('file');

            $result['cookie'] = [
                'name' => $this->_getSession()->getName(),
                'value' => $this->_getSession()->getSessionId(),
                'lifetime' => $this->_getSession()->getCookieLifetime(),
                'path' => $this->_getSession()->getCookiePath(),
                'domain' => $this->_getSession()->getCookieDomain(),
        } catch (\Exception $e) {
            $result = ['error' => $e->getMessage(), 'errorcode' => $e->getCode()];
        return $this->resultFactory->create(ResultFactory::TYPE_JSON)->setData($result);

And Created custom Model ImageUploader.php below

public function saveFileToTmpDir($fileId)
        $baseTmpPath = $this->getBaseTmpPath();

        $uploader = $this->uploaderFactory->create(['fileId' => $fileId]);

        $result = $uploader->save($this->mediaDirectory->getAbsolutePath($baseTmpPath));

        if (!$result) {
            throw new \Magento\Framework\Exception\LocalizedException(
                __('File can not be saved to the destination folder.')

        $result['tmp_name'] = str_replace('\\', '/', $result['tmp_name']);
        $result['path'] = str_replace('\\', '/', $result['path']);
        $result['url'] = $this->storeManager
                ) . $this->getFilePath($baseTmpPath, $result['file']);
        $result['name'] = $result['file'];

        if (isset($result['file'])) {
            try {
                $relativePath = rtrim($baseTmpPath, '/') . '/' . ltrim($result['file'], '/');
            } catch (\Exception $e) {
                throw new \Magento\Framework\Exception\LocalizedException(
                    __('Something went wrong while saving the file(s).')

        return $result;

This customization gives the error:

The file was not uploaded with error code :666

Could anyone help to fix this issue?

1 Answer 1


This issue generally occurs when your $_FILES is empty.

  1. It can be due to permission issue,

  2. or it can also be due to the upload_max_filesize or post_max_size. Check your file size for that, if your file size is greater than either upload_max_filesize or post_max_size, then increase their value.

  • No, i verified $_FILES not empty able to upload a file normal from normal php code,problem with when having dynamic rows from UI component only from vendor/Framework/File/Uploader.php
    – naren
    Commented Jun 18, 2020 at 10:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.