PHP使用md5名称上传图像

9 浏览
0 Comments

PHP使用md5名称上传图像

我需要使用md5/uniqid来上传图片并命名。PHP代码如下:

$filenamekey = md5(uniqid($_FILES["myfile"]["name"], true));
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$filenamekey);

这段代码将图片移动到一个以md5值为名称的文件夹,但上传的文件没有任何图片扩展名/类型。我该如何修复这个问题?

图片?

enter image description here

0
0 Comments

PHP上传图片并使用md5名称的原因是为了避免文件重名的问题。当用户上传图片时,如果多个用户上传了相同的文件名的图片,就会导致文件被覆盖或冲突。因此,使用md5名称可以确保每个文件都有唯一的名称,从而避免这个问题的发生。

解决方法是通过以下代码获取文件扩展名,并将其添加到$filenamekey中:

$extension = pathinfo($_FILES["myfile"]["name"], PATHINFO_EXTENSION);
$filenamekey .= "." . $extension;

这段代码使用pathinfo()函数来获取文件的扩展名。它接受两个参数,第一个参数是文件的路径,这里使用$_FILES["myfile"]["name"]来获取上传的文件名;第二个参数是需要获取的信息类型,这里使用PATHINFO_EXTENSION来获取扩展名。

然后,通过.=运算符将扩展名添加到$filenamekey中,.用于连接字符串。

使用md5名称作为文件名的好处是确保了文件名的唯一性,即使多个用户上传了相同的文件,它们的文件名也会不同。这样可以保证文件不会被覆盖或冲突,提高了文件管理的效率和安全性。

0
0 Comments

PHP使用md5名称上传图片的问题的原因是在文件名转换为md5编码时,没有包含文件扩展名。这导致文件保存时丢失了扩展名,无法正确地识别文件类型。

要解决这个问题,可以通过以下方法添加文件扩展名:

$Filepath = $_FILES['myfile']['name'];
$filenamekey = md5(uniqid($Filepath, true));     
$Fileext = pathinfo($Filepath, PATHINFO_EXTENSION);
$filenamekey = $filenamekey.'.'.$Fileext;

首先,获取上传文件的原始文件名,并使用uniqid()函数生成唯一的文件名。然后使用md5()函数对文件名进行编码,将结果保存在$filenamekey变量中。

接下来,使用pathinfo()函数获取文件的扩展名,并将其保存在$Fileext变量中。

最后,将文件扩展名添加到$filenamekey变量中,以确保保存的文件具有正确的扩展名。

通过这种方法,可以确保使用md5名称上传的图片文件具有正确的文件扩展名,从而解决了文件类型无法识别的问题。

0
0 Comments

PHP上传图片时使用md5名称的原因是为了防止文件名重复导致的覆盖问题。使用md5函数对文件名进行加密处理可以生成唯一的文件名,从而避免了文件名冲突的风险。

解决方法是首先使用uniqid函数生成一个唯一的字符串作为文件名,然后使用md5函数对该字符串进行加密处理。接着,通过pathinfo函数获取原始文件的扩展名,并将其追加在生成的文件名后面。最后,使用move_uploaded_file函数将文件从临时目录移动到指定的输出目录,并使用生成的md5文件名进行保存。

下面是具体的代码实现:

$filenamekey = md5(uniqid($_FILES["myfile"]["name"], true));
// 找到原始文件的扩展名并将其追加在文件名后面
$filenamekey .= "." . pathinfo($_FILES["myfile"]["name"], PATHINFO_EXTENSION);
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$filenamekey);

0