1

我正在尝试获取应用程序/缓存目录中文件的相对路径。

我已经尝试通过自定义配置文件使用:

parameters:    
output_dat_path : %kernel.root_dir%/cache/%kernel.environment%/myfile.dat

我也试过:

$kernel = $this->get('kernel'); 
$path = $kernel->getRootDir() . '/cache/' . $kernel->getEnvironment() . 'myfile.dat';

两种方式都生成绝对路径,在控制器或服务中使用它们都可以正常工作,但是,我需要一个相对路径来为用户生成链接。

我正在考虑将文件移动到我的服务中的 web 目录并使用模板中的资产来生成链接,但是该文件对每个用户都是私有的,我不想公开它。

任何想法?

提前致谢。

更新

我解决了这个问题:

  1. 用户一旦通过身份验证,就会生成他的文件。如果文件不存在,则生成。如果存在,则控制器检查用户权限、时间等并返回文件。
  2. 如果必须生成系统,则在私有文件夹中创建文件并生成加密名称。加密名称是使用 base_64 生成的,之后进行了一些更改。
  3. 系统向用户显示一个链接。该链接类似于 /get/privatefile/eDfa...23Hn
  4. 当用户点击它时,控制器会检查用户、创建时间等。
  5. 如果一切正常,控制器将返回文件。

我这样做是因为该文件必须创建一次,并且可以在短时间内使用,之后必须删除。如果用户将链接传递给其他人,则加密名称的校验和失败,无法访问文件。

我确信这不是最好的解决方案,但它可以正常工作。

4

0 回答 0