找不到 Symfony oneup league flysystem 文件

Symfony oneup league flysystem file not found

我正在使用 oneup/flysystem-bundlevich/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