当前位置: 首页 > 知识库问答 >
问题:

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

南宫炜
2023-03-14

我需要在上传字段中显示保存的文件名。我怎么才能做到?这是我_代码form.php

 <?=
$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个答案

谈禄
2023-03-14

在您的控制器类中,只需actionUpload定义上传文件目录路径,因为UploadedFile模型将文件保存在绝对物理路径中。如果需要,可以必要的验证后变量使用$_FILES。方法需要完整的绝对文件路径和文件名。根据其SO使用斜杠或反斜杠以获得最佳效果。

屠钊
2023-03-14

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

$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_images_预览和$all_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'=>''

            ],
        ]);
 类似资料:
  • 我决定上传几个图像文件使用文件输入小部件 控制员/行动 模型 这是印刷品 后果 结果是数组中只有最后一个文件。如果我不使用这个小部件,那么一切都是正常加载的数组。 如何加载和处理一组照片?

  • 问题1我创建了一个文本字段,如上面的代码所示,并尝试使用TextBox.setValue(“测试值”)设置值;方法,但它给出的错误如下所示: 问题3 为了解决问题#2,我需要将NeedExceptions标志设置为true,如下所示,然后在PDF中正确显示该字段值。但是在这个解决方案之后,一旦用户改变了字段值,我们再次解析这个PDF字段,我就无法提取/解析PDF字段。 注意:-这个问题存在于Ado

  • 我试图使用在表单中加载多个文件。 我使用我的表将文件名和其他字段保存在数据库中,并将文件保存在我的文件系统中。我通常把和通过表链接起来。 我成功地保存了多个文件,但当我加载特定

  • 问题内容: 问题1, 我创建了一个文本字段,如上面的代码所示,并尝试使用textbox.setValue(“ Test Value”);设置值。方法,但显示如下错误: 第2期 为了解决问题#1,如果我使用cosDictionary属性(即cosDict1.setItem(COSName.V,new COSString(“ Test Value1”)))设置textBox的值; 然后在Adobe R

  • 我正在尝试上传文件使用react和axios到节点后端使用Multer。 当我将表单用作: 它工作得很好,但当使用axios时,文件是未定义的: 我将axios用作: 我后端如下: 有谁能帮我一下吗?我真的被卡住了。我需要在后端上传图像。

  • 我需要帮助保存上传的文件名在数据库表中使用laravel 5.1。 保存图像详细信息的我的控制器代码 接受图像的我的视图代码 此控制器代码存储图像正常工作,但我试图将图像文件名保存到表中,此代码将filepath存储到数据库表中。 由于我使用直接创建()方法在表中存储请求对象,我不知道如何存储文件名而不是路径。 检查此图像中的表数据