我使用Amazon S3 API上传文件,每次上传时我都会更改文件名.
例如:
Dog.png> 3Sf5f.png
现在我得到了随机部分:
function rand_string( $length ) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
$str .= $chars[ rand( 0, $size - 1 ) ];
}
return $str;
}
Run Code Online (Sandbox Code Playgroud)
所以我将random_string设置为name参数:
$params->key = rand_string(5);
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,这不会显示任何扩展.所以文件将上传3Sf5f而不是3Sf5f.png.
变量$ filename为我提供了文件的全名及其扩展名.
如果我使用$params->key = rand_string(5).'${filename}';我得到:
3Sf5fDog.png
Run Code Online (Sandbox Code Playgroud)
所以我试图检索$ filename扩展并应用它.我尝试了30多种方法而没有任何积极的方法.
例如,我尝试了$ path_info(),我尝试了substr(strrchr($ file_name,'.'),1); 还有更多.所有这些都给了我3Sf5fDog.png或者只是3Sf5f.
我试过的一个例子:
// As @jcinacio pointed out. Change this to: …Run Code Online (Sandbox Code Playgroud)