0

当我上传我使用的pdf时,我创建了一个CRUD(使用laravel的背包crud)来上传证书

 $this->crud->addField([

      'name'  => 'respaldo',
      'label' => 'Respaldo',
      'type'  => 'upload',
      'upload' => true,

      'wrapperAttributes' => [
            'class' => 'form-group col-md-6'
       ],
    ]);

当我想查看上传文件的链接时,路径中缺少存储,所以我将它添加到了一个 mutator 中,见下文

 public function setRespaldoAttribute($value)
 {   

  $attribute_name = "respaldo";
  $disk = "public";
  $destination_path = "uploads/respaldos";
  $this->uploadFileToDisk($value, $attribute_name, $disk,   $destination_path);
 }    

 public function getRespaldoLink() {

 return '<a href="'.asset('storage/'.$this->respaldo).'" target="_blank">
             Descargar</a>';
 } 

现在,当单击它显示在列表视图上的链接时,问题是当我单击编辑时,那里缺少“存储”段,所以我得到 404。看图片

图片

4

1 回答 1

0

我遇到了同样的问题,并尝试修改链接,然后在浏览器上显示它以供用户在更新或显示 CRUD 中预览。

问题是无论路径存储在数据库中,它都会在没有头文件夹的浏览器上弹出。如我们所知,我们可以使用 Laravel LIKE assets('storage/'.$file_path) 来修改 head 文件夹

因此,您需要在存储到数据库之前更新路径。

  1. 搜索和更新文件 HasUploadFields.php
  2. 使用附加组件 'storage/' 更新这一行,如下所示: $this->attributes[$attribute_name] = 'storage/' 。$文件路径;
  3. 对 uploadMultipleFilesToDisk 方法执行相同的操作
  4. 现在对于所有上传的新文件,它将在存储文件路径之前添加“storage/”
于 2021-10-05T11:37:28.383 回答