编码上传的文件名

时间:2016-07-31 11:57:54

标签: php encode

我当前的网站允许用户文件上传,因此,为了避免冲突,我需要以某种方式编码存储的文件名。但我希望能够检索下载的原始文件名。所以,我正在尝试将文件名编码为

  • 独特
  • 解码

截至目前,我已尝试使用以下代码:

    $hash = $file->hashName();

    $fileName = base64_encode(json_encode([
        'hash' => $hash,
        'name' => $file->getClientOriginalName()
    ]));       
    return $fileName;

但是base64_encode生成的字符串长度超过256个,特别是当文件名使用unicode字符(如cyrillic)时。那么,有没有其他方法来编码文件名?

1 个答案:

答案 0 :(得分:0)

我认为做映射会更简单。要保存磁盘上的文件,请选择一些唯一的名称。在数据库中,您将保留有关原始文件名和磁盘上文件名的上传文件的参考信息,当有人想要下载该文件时,您可以在Content-Disposition标题中设置原始文件名。

header('Content-Disposition: filename="originalFilename.pdf"');