2

我有一個表格如何yii2創建一個目錄中的目錄和上傳文件到該目錄

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> 
<?php echo $form->field($userformmodel, 'user_image')->fileInput(); ?> 
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> 
<?php ActiveForm::end(); ?> 

我的形式上傳文件,並提交

In the model I have written the code as 

public function rules() 
{ 
    return [ 
     [['user_image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'] 
    ]; 
} 

public function upload() 
{ 
    if ($this->validate()) { 
     $this->user_image->saveAs('uploads/' . $this->user_image->baseName . '.' . $this->user_image->extension); 
     return true; 
    } else { 
     return false; 
    } 
} 

在我的控制器

public function actionProfile() 
{ 
$model = new UserProfile(); 
$userformmodel = new UserForm(); 
$model->user_image = UploadedFile::getInstance($userformmodel, 'user_image'); 
if($model->save(false)) 
       { 
       $model->upload();   
       } 
} 

這只是創建一個名爲uploads的目錄。但是我想爲每個用戶在uploads目錄中創建一個目錄,即根據數據庫表user中的主鍵我想創建並命名目錄名。

實施例中,如果用戶登記保存爲PrimaryKey的,然後用一個名稱必須創建和上傳他必須保存到該目錄的文件目錄。

如何使這發生?請幫忙。

+0

那麼,你應該簡單地創建迪爾之前......你試過什麼? – soju

+0

我沒有嘗試任何東西,因爲我發現任何相關的解決方案。如何創建一個子目錄 –

+0

您是否搜索? http://stackoverflow.com/questions/4384951/how-to-create-destination-folder-in-php-while-using-move-uploaded-file – soju

回答

4

在yii2中,您可以使用'yii \ helpers \ FileHelper'創建文件夾。

FileHelper::createDirectory($path, $mode = 0775, $recursive = true); 

你的情況:

public function upload() 
{ 
    if ($this->validate()) { 
     $path = 'uploads/'. USERNAMEHERE .'/'. date('YMD'); 
     FileHelper::createDirectory($path); 
     $this->user_image->saveAs($path .'/'. $this->user_image->baseName . '.' . $this->user_image->extension); 
     return true; 
    } else { 
     return false; 
    } 
} 
2

第1步:

使用 '警予\傭工\ FileHelper' 在你的模型文件。

第2步:

在模型文件,你正在寫的保存文件功能,添加這些行:

if ($this->validate()) { 
    $path = 'uploads/'. USERNAMEHERE .'/'. date('YMD'); 
    FileHelper::createDirectory($path); 
    $this->user_image->saveAs($path .'/'. $this->user_image->baseName . '.' . $this->user_image->extension); 
    return true; 
} 
0

下面是根據另一個目錄中創建目錄和存儲文件的代碼以年 - >月 - > FILE_NAME使用Yii框架 年 - 父目錄, 月 - 子目錄

後來終於在儲存一個月目錄中的文件:

$new_file_name = $_FILES['Book']['name']['image']; 
      $path=YII::getPathOfAlias('webroot').'/resources/uploads/'; 
      $year_folder = $path . date("Y"); 
      $month_folder = $year_folder . '/' . date("m"); 


      // change umask to '0' by default to make folder with full permissions 
      $oldmask = umask(0); 

      /* 
      for reference 
      https://stackoverflow.com/questions/3997641/why-cant-php-create-a-directory-with-777-permissions 
      */ 

      !file_exists($year_folder) && mkdir($year_folder , 0777); 
      !file_exists($month_folder) && mkdir($month_folder, 0777); 
      umask($oldmask); 

      $path = $month_folder . '/' . $new_file_name; 
      $res = move_uploaded_file ($_FILES['Book']['tmp_name'] 
                ['image'],$path); 
      chmod($path, 0666); 
相關問題