PHP:为文件名

时间:2018-05-22 08:40:48

标签: php laravel encryption

我想上传一个带有唯一随机字符串作为文件名的文件,然后如果我上传一个名为file.txt的文件,它将像m84n3nv38tu48a一样进行哈希处理,如果我再次上传同一个文件,它将无法保存,因为存在与该哈希相同的文件名。

然后下载按原始名称搜索的文件,再次进行哈希并比较以查找目录。

像这样的东西

public function storeFile(Request $request) {
    $file = $request->file('file');
    $filename = $file->getClientOriginalName();
    $path = $file->move(storage_path()."\\app\\file", md5_file($file);
    $response = [
        "file Name" => $filename,
        "Extension" => $file->getClientOriginalExtension(),
        "Path" => storage_path().$path
    ];
    return response()->json($response);
}

public function downloadFile($fileName) {
    $fullpath = storage_path()."\\app\\file\\".md5_file($fileName);
    $file = file_exists($fullpath);
    if($file)
        return response()->download($fullpath, $fileName);
    return response()->json('File not Found', 404);
}

downloadFile中的md5_file方法没有(显然可行),因为$ fileName是一个字符串(不是文件),然后我得到一个不同的哈希。

我该如何解决这个问题?

修改

我想用唯一的ID替换整个文件名。

0 个答案:

没有答案