找不到 Symfony oneup league flysystem 文件
Symfony oneup league flysystem file not found
我正在使用 oneup/flysystem-bundle
和 vich/uploader-bundle
上传文件,效果很好。
尝试使用
删除文件时
$this->filesystem->delete($path)
尽管路径正确,但它会抛出错误提示找不到文件。
表明这可能是由于 $this->filesystem
使用了相对路径。
可能是这样,但相对于什么?
最初我使用 $path
作为完整的绝对路径。然后我尝试了几种相对路径的变体,但没有任何效果。
我知道我可以直接使用 unlink
,但我想了解这一点。
配置文件如下所示:
oneup_flysystem:
adapters:
category_image:
local:
directory: "%kernel.project_dir%/public/images/category"
filesystems:
category_image_filesystem:
adapter: category_image
mount: category_image_filesystem
编辑:Bossman 提出的解决方案
在配置上:
category_image:
local:
directory: "%kernel.project_dir%/public/images/category"
permissions:
file:
public: 0o644
private: 0o600
dir:
public: 0o755
private: 0o700
在控制器上:
$filename = $oldImage->getFilename();
if ($filename && $this->filesystem->has($filename)) {
$this->filesystem->delete($filename);
}
原来的 Flysystem 在配置文件中有文件和目录可见性的可见性指令,默认情况下它们是 private。让这些 public.
如图step 3:
# app/config/config.yml
oneup_flysystem:
adapters:
my_adapter:
local:
location: "%kernel.root_dir%/cache"
filesystems:
my_filesystem:
adapter: my_adapter
# optional - defines the default visibility of files: `public` or `private` (default)
visibility: private
# optional - defines the default visibility of directories: `public` or `private` (default)
directory_visibility: private
为了更好地控制文件和目录可见性属性,可以设置为 this, like chmod:
# app/config/config.yml
oneup_flysystem:
adapters:
my_adapter:
local:
location: "%kernel.root_dir%/../uploads"
lazy: ~ # boolean (default "false")
writeFlags: ~
linkHandling: ~
permissions:
file:
public: 0o644
private: 0o600
dir:
public: 0o755
private: 0o700
我正在使用 oneup/flysystem-bundle
和 vich/uploader-bundle
上传文件,效果很好。
尝试使用
删除文件时 $this->filesystem->delete($path)
尽管路径正确,但它会抛出错误提示找不到文件。
$this->filesystem
使用了相对路径。
可能是这样,但相对于什么?
最初我使用 $path
作为完整的绝对路径。然后我尝试了几种相对路径的变体,但没有任何效果。
我知道我可以直接使用 unlink
,但我想了解这一点。
配置文件如下所示:
oneup_flysystem:
adapters:
category_image:
local:
directory: "%kernel.project_dir%/public/images/category"
filesystems:
category_image_filesystem:
adapter: category_image
mount: category_image_filesystem
编辑:Bossman 提出的解决方案
在配置上:
category_image:
local:
directory: "%kernel.project_dir%/public/images/category"
permissions:
file:
public: 0o644
private: 0o600
dir:
public: 0o755
private: 0o700
在控制器上:
$filename = $oldImage->getFilename();
if ($filename && $this->filesystem->has($filename)) {
$this->filesystem->delete($filename);
}
原来的 Flysystem 在配置文件中有文件和目录可见性的可见性指令,默认情况下它们是 private。让这些 public.
如图step 3:
# app/config/config.yml
oneup_flysystem:
adapters:
my_adapter:
local:
location: "%kernel.root_dir%/cache"
filesystems:
my_filesystem:
adapter: my_adapter
# optional - defines the default visibility of files: `public` or `private` (default)
visibility: private
# optional - defines the default visibility of directories: `public` or `private` (default)
directory_visibility: private
为了更好地控制文件和目录可见性属性,可以设置为 this, like chmod:
# app/config/config.yml
oneup_flysystem:
adapters:
my_adapter:
local:
location: "%kernel.root_dir%/../uploads"
lazy: ~ # boolean (default "false")
writeFlags: ~
linkHandling: ~
permissions:
file:
public: 0o644
private: 0o600
dir:
public: 0o755
private: 0o700