Php 将图像存储在文件夹laravel中
我有一小段代码,可以从表单中获取请求输入文件,并将其移动到文件夹中。这是:Php 将图像存储在文件夹laravel中,php,laravel,Php,Laravel,我有一小段代码,可以从表单中获取请求输入文件,并将其移动到文件夹中。这是: $destinationPath = 'uploads'; $filename = $file->getClientOriginalName(); $upload_success = $file->move($destinationPath, $filename); 是的,上面的代码可以工作,但是我想做的是每次我上传一张图片时,它都会有一个唯一的名称,这样它就不会覆盖文件夹中的任何图片。现在,我就是这么
$destinationPath = 'uploads';
$filename = $file->getClientOriginalName();
$upload_success = $file->move($destinationPath, $filename);
是的,上面的代码可以工作,但是我想做的是每次我上传一张图片时,它都会有一个唯一的名称,这样它就不会覆盖文件夹中的任何图片。现在,我就是这么做的:
function generateRandomString($length = 8) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
$destinationPath = 'uploads';
$rand = md5(generateRandomString());
$filename = $rand."_".$file->getClientOriginalName();
$upload_success = $file->move($destinationPath, $filename);
function generateRandomString($length=8){
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$charactersLength=strlen($characters);
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,$charactersLength-1)];
}
返回$randomString;
}
$destinationPath='uploads';
$rand=md5(generateRandomString());
$filename=$rand.“38290;”$file->getClientOriginalName();
$upload\u success=$file->move($destinationPath,$filename);
这将输出类似于7C72445850A11C68747793C86554127uJellyfish.jpg的内容,但它看起来不整洁。这有什么诀窍吗?谢谢。创建唯一文件名的更常见方法之一是使用时间 您还可以检查以下内容:
只需删除此处的
md5
$rand=md5(generateRandomString())代码>
因为生成了一个随机字符串,然后对其进行散列处理
我已经设法解决了我的问题。首先按照Abdulla的建议删除
md5
,然后执行以下操作:
$destinationPath = 'uploads';
$rand = generateRandomString();
$file_list = File::files('uploads'); //returns an array of all of the files in a given directory.
do {
$filename = $rand."_".$file->getClientOriginalName();
} while(in_array("uploads/".$filename, $file_list)); //keep generating a string until it doesn't exist in the given directory.
$upload_success = $file->move($destinationPath, $filename); //move the file
删除此处的
md5
$rand=md5(generateRandomString())代码>为什么不检查文件是否存在,以及它是否将_1添加到新文件名?是的@Abdulla是正确的。因为您生成了一个随机字符串,然后对其进行哈希运算。@aldrin27您可能需要检查我的答案并提出更多建议。谢谢。用户希望使用ID的文件名是什么?
?您可以查看我的答案并提出更多建议。非常感谢。