为用户上载的文件生成带时间戳的文件名

以下将无法在 Windows 计算机上运行

$file = $request->file('file_upload');
$sampleName = 'UserUpload';
$destination = app_path() . '/myStorage/';
$fileName = $sampleName . '-' . date('Y-m-d-H:i:s') . '.' . 
$file->getClientOriginalExtension();
$file->move($destination, $fileName);  

它会抛出一个错误,例如“无法将文件移动到/ path …”

为什么? - 这在 Ubuntu 服务器上完美运行
原因是在 Windows 上,colon ':'不允许在 linux 上允许的文件名中。这是一个很小的事情,我们可能不会提前注意到它并不断想知道为什么在 Ubuntu(Linux) 上运行良好的代码不起作用?
我们的第一个预感是检查文件权限和类似的东西,但我们可能不会注意到 colon ':'是这里的罪魁祸首。
因此,为了在 Windows 上上传文件,请不要在生成带时间戳的文件名时使用 colon':' ,而是执行以下操作:

$filename = $sampleName . '-' . date('Y-m-d-H_i_s') . '.' . $file->getClientOriginalExtension();  //ex output UserUpload-2016-02-18-11_25_43.xlsx
            
                                   OR

$filename = $sampleName . '-' .date('Y-m-d H i s') . '.' . $file->getClientOriginalExtension();  //ex output UserUpload-2016-02-18 11 25 43.xlsx

                                   OR

$filename = $sampleName . '-'.date('Y-m-d_g-i-A').'.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18_11-25-AM.xlsx