我当前的网站允许用户文件上传,因此,为了避免冲突,我需要以某种方式编码存储的文件名。但我希望能够检索下载的原始文件名。所以,我正在尝试将文件名编码为
截至目前,我已尝试使用以下代码:
$hash = $file->hashName();
$fileName = base64_encode(json_encode([
'hash' => $hash,
'name' => $file->getClientOriginalName()
]));
return $fileName;
但是base64_encode
生成的字符串长度超过256个,特别是当文件名使用unicode字符(如cyrillic)时。那么,有没有其他方法来编码文件名?
答案 0 :(得分:0)
我认为做映射会更简单。要保存磁盘上的文件,请选择一些唯一的名称。在数据库中,您将保留有关原始文件名和磁盘上文件名的上传文件的参考信息,当有人想要下载该文件时,您可以在Content-Disposition标题中设置原始文件名。
header('Content-Disposition: filename="originalFilename.pdf"');