代码之家  ›  专栏  ›  技术社区  ›  Blackjack

使用Yii2中的kartik表单在Upload字段中显示保存的文件名

  •  0
  • Blackjack  · 技术社区  · 6 年前

    我有一个使用Yii2框架构建的应用程序,这个应用程序有一个使用 enter image description here

     <?=
    $form->field($model, 'buktiNpwp')->widget(FileInput::classname(), [  
        'options' => [
            'multiple' => false,
            'accept' => 'img/*', 'doc/*', 'file/*',
            'class' => 'optionvalue-img',
            'placeholder' => 'maximum size is 2 MB',            
        ],
        'pluginOptions' => [
            'allowedFileExtensions' => ['jpg', 'gif', 'png', 'jpeg'],
            'maxFileSize' => 2048, //membatasi size file upload
            'layoutTemplates' => ['footer' => 'Maximum size is 2 MB'],
            'browseLabel' => 'Browse (2MB)',
            'showPreview' => false,
            'showCaption' => true,
            'showRemove' => true,
            'showUpload' => false,
        ]
    ]);
    ?>
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Fareed Ud Din    6 年前

    要保存图像,请在控制器中执行此操作。希望能奏效

    $model = new YourModel();
    
    $files = UploadedFile::getInstances($model, 'name');
    foreach($files as $file){
       $path = 'somepath';
       $file->saveAs($path);
    }
    

    $images_old = \common\models\YourModel::find()->where(['=', 'some_id', $model->id])->all();
    
    if ($images_old) {
                foreach ($images_old as $image) {
                    $baseurl = \Yii::$app->request->BaseUrl;
                    $image_url = $baseurl . '/uploads/' . $image->thumbnail;
                    $all_images[] = Html::img("$image_url", ['class' => 'file-preview-image']);
                    $obj = (object) array('caption' => '', 'url' => $baseurl . '/some-path/delete-image', 'key' => $image->id);
                    $all_images_preview[] = $obj;
                }
            }
    

    现在将$all\u images\u preview和$all\u images发送到您的视图文件,并按如下方式显示

    $form->field($images, 'name[]')->widget(FileInput::classname(), [
                'options' => ['accept' => 'image/*', 'multiple' => true],
                'pluginOptions' => [
                    'previewFileType' => 'image',
                    'allowedFileExtensions' => ['jpg', 'gif', 'png', 'bmp','jpeg'],
                    'showUpload' => true,
                    'initialPreview' => $all_images,
                    'initialPreviewConfig'=>$all_images_preview,
                    'overwriteInitial' => false,
                    'showRemove' => true,
                    'showPreview' => true,
                    'uploadUrl' => Url::to(['cases/upload']),
                    //'onRemove'=>''
    
                ],
            ]);
    
        2
  •  0
  •   Ragner Moura    6 年前

    在你的控制器类中 actionUpload 定义上载文件目录路径,因为 UploadedFile 模型以绝对物理路径保存文件。如果需要,可以验证post变量的使用 $_FILES . 方法 saveAs 需要完整的绝对文件路径和文件名。使用斜杠或反斜杠根据其所以最好的结果。

    推荐文章