私はカスタムファイルナメルとセットアップVichUploaderBundleを持っており、それが正常に動作します。..Symfony3 + VichUploaderBundle +カスタムアップロードディレクトリ
私の関連config.yml:
vich_uploader:
db_driver: orm
mappings:
product_image:
uri_prefix: '/uploads/products'
upload_destination: '%kernel.root_dir%/../web/uploads/products'
namer: namer.product_image
#namer: vich_uploader.namer_uniqid
#namer: vich_uploader.namer_origname
#namer: vich_uploader.namer_property
inject_on_load: false
delete_on_update: true
delete_on_remove: true
私のカスタムナメル:
public function name($obj, PropertyMapping $mapping)
{
$file = $mapping->getFile($obj);
$new_name = $this->generateRandomSecret();
if ($extension = $file->guessExtension())
{
$new_name = $new_name .'.'. $extension;
}
return $new_name;
}
しかし、私はファイルをアップロードするカスタムパスを使用したい。
セッション変数「upload_files_path」 への必要なアップロードパスをコントローラに保存し、上記のパスを取得します。
データベース(id、image_name、udated_at)に保存しますが、 ですが、ファイルシステムにファイルを書き込むことはありません!
私はそれが "/" で先頭に追加ファイルパスを返すテンプレート内
<img src="{{ vich_uploader_asset(product, 'imageFile') }}" />
を呼び出します。 私はそれを動作させる方法を理解できません。
カスタムファイルパスの設定は次のとおりです。 "uri_prefix"と "upload_destination"を空白に編集しました。 編集したconfig.yml
vich_uploader:
db_driver: orm
mappings:
product_image:
uri_prefix: ''
upload_destination: ''
namer: namer.product_image
inject_on_load: false
delete_on_update: true
delete_on_remove: true
私の更新されたカスタムナメル: はここで私は、新しいファイル名でアップロードパスを連結します。
public function name($obj, PropertyMapping $mapping)
{
$file = $mapping->getFile($obj);
$new_name = $this->generateRandomSecret();
if ($extension = $file->guessExtension())
{
$new_name = $new_name .'.'. $extension;
}
$upload_path = $this->container->get('session')->get('upload_files_path');
$full_path = $upload_path . $new_name;
return $full_path;
}
あなたの時間と知識をありがとう。