2

Ich habe ein FormularWie ein Verzeichnis innerhalb eines Verzeichnisses in yii2 und Upload-Datei in das Verzeichnis erstellen

<?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(); ?> 

I in Form eine Datei ist das Hochladen und

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; 
    } 
} 

In meinem Controller einreichen

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

Dies ist nur ein Verzeichnis namens uploads erstellen. Aber ich möchte ein Verzeichnis im Upload-Verzeichnis für jeden Benutzer erstellen, d. H. Basierend auf dem Primärschlüssel in der Datenbanktabelle user möchte ich den Verzeichnisnamen erstellen und benennen.

Beispiel, wenn der Benutzer Registrierung als PrimaryKey , dann ein Verzeichnis mit dem Namen gespeichert müssen erstellt werden, und die Datei, die er lädt muss in diesem Verzeichnis gespeichert werden.

Wie kann man das erreichen? bitte hilfe.

+0

Nun, Sie sollten einfach dir zuvor erstellen ... Was haben Sie versucht? – soju

+0

Ich habe nichts versucht, da ich keine relative Lösung finden kann. So erstellen Sie ein Unterverzeichnis –

+0

Haben Sie gesucht? http://stackoverflow.com/questions/4384951/how-to-create-destination-folder-in-php-while-using-move-uploaded-file – soju

Antwort

4

In yii2 können Sie 'yii \ helpers \ FileHelper' zum Erstellen von Ordnern verwenden.

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

In Ihrem Fall:

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

Schritt 1:

Use 'yii \ Helfer \ FileHelper' in Ihrer Modelldatei.

Schritt 2:

In der Modelldatei in dem Sie die Datei-Funktion speichern schreiben, fügen Sie die folgenden Zeilen:

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

Hier ist der Code für das Verzeichnis in einem anderen Verzeichnis erstellen und speichern Sie die Datei nach in der Jahres-> Monat-> file_name mit yii Rahmen Jahr - übergeordnetes Verzeichnis, Monat - Unterverzeichnis

Dann schließlich die Datei im Monat Verzeichnis speichern:

$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); 
Verwandte Themen