yii2 saveAs两个文件,只保存一个

时间:2017-12-23 09:36:02

标签: file-upload yii2 yii2-advanced-app

我不知道为什么,但我有表格,我指定两个上传(预览,细节),当我试图保存它们时,细节被保存但不预览。 Db有我期望的结果 - 在imageSrc和imageDetailSrc列中保存了$ slug

const UPLOAD_FILE_URL = 'uploads/recipes/';
const UPLOAD_FILE_DETAILS_URL = self::UPLOAD_FILE_URL.'details/';    

$filePath = self::UPLOAD_FILE_URL . $slug . '.' . $this->imageSrc->extension;
            $filePathDetail = self::UPLOAD_FILE_DETAILS_URL . $slug . '.' . $this->imageDetailSrc->extension;

            if ($this->imageSrc->saveAs($filePath) && $this->imageDetailSrc->saveAs($filePathDetail)) {
                $this->imageSrc = $slug . '.' . $this->imageSrc->extension;
                $this->imageDetailSrc = $slug . '.' . $this->imageDetailSrc->extension;
            }

            if ($this->save(false, ['imageSrc', 'imageDetailSrc'])) {
                return true;
            }

1 个答案:

答案 0 :(得分:1)

Yii2官方文档指出saveAs函数使用move_uploaded_file()函数来移动临时文件。因此,当您第一次调用saveAs函数时,临时文件将被删除。如果您不想删除saveAs,那么您应该将false作为第二个参数发送到saveAs函数。

const UPLOAD_FILE_URL = 'uploads/recipes/';
const UPLOAD_FILE_DETAILS_URL = self::UPLOAD_FILE_URL.'details/';    

$filePath = self::UPLOAD_FILE_URL . $slug . '.' . $this->imageSrc-
>extension;
$filePathDetail = self::UPLOAD_FILE_DETAILS_URL . $slug . '.' . $this->imageDetailSrc->extension;

if ($this->imageSrc->saveAs($filePath, false) && $this->imageDetailSrc->saveAs($filePathDetail)) {
      $this->imageSrc = $slug . '.' . $this->imageSrc->extension;
      $this->imageDetailSrc = $slug . '.' . $this->imageDetailSrc->extension;
}
if ($this->save(false, ['imageSrc', 'imageDetailSrc'])) {
   return true;
}