公开上传的文件未显示

时间:2018-12-18 13:05:16

标签: linux filesystems laravel-5.7

我在替换公共文件夹上的已上传文件时遇到问题。每次尝试从公用文件夹加载文件时,总是会出现404错误。

所有关于文件上载的测试都顺利通过,可以加载文件,文件存在于数据库和公用文件夹中,创建了符号链接,但是我无法显示公用文件夹中的内容。

代码的主要部分:

uploaderController.php

$path = $request->file( 'userfile' )->store( 'logos', 'public' );

在此之后的文件夹:

/storage/app/public/logos/file.ext

使用刀片模板中的文件:

<img src="{{ asset( $model->image_path ) }}" />

来自浏览器的响应 404-找不到页面

有关服务器文件夹的更多信息:

/public/storage  - this is the symlink to the public folder 777 permission
/storage/app/public  - the storage public folder 775 permission
/storage/app/public/logos  - the logo folder 755 permission
/storage/app/public/logos/file.ext  - the file 644 permission

我尝试将文件权限更改为775,但始终为404

如何解决此问题? 谢谢

[编辑] 我发现与可以查看公共文件的另一台服务器不同。当ls -l <​​/ p>时,该服务器中的符号链接具有绿色背景。

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是在uploaderController.php中,当您保存上传文件的路径时,必须在“ storage”文件夹之前。

uploaderController.php

subject = new Subject()

constructor() {
  this.subject.pipe(
    map((searchText) => searchText.trim().toLowerCase()),
    filter(text => text.length > 2),
    debounceTime(10),
    distinctUntilChanged(),
    switchMap(searchText => this.locationService.getCitiesList(searchText))
  ).subscribe(response => {
    this.dataListOption = response.cities.map(city => city.name);
  });
}

keyup(text) {
  this.subject.next(text)
}