我正在使用oneup/flysystem-bundleand上傳檔案,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);
}
uj5u.com熱心網友回復:
原始Flysystem在組態檔中具有用于檔案和目錄可見性的可見性指令,默認情況下它們是private。將這些公開。
如步驟 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
要獲得更多控制,可以像這樣設定檔案和目錄可見性屬性,例如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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/436413.html
