Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重命名数组中存储的多个图片_Php - Fatal编程技术网

Php 重命名数组中存储的多个图片

Php 重命名数组中存储的多个图片,php,Php,这就是我将图片数组存储到文件夹和MySQL行的方式 $pictures = array_filter($_FILES['pictures']['name']); $total_pictures = count($_FILES['pictures']['name']); for($i = 0; $i < $total_pictures; $i++) { $tmpname = $_FILES['pictures']['tmp_name'][$i]; if($tmp

这就是我将图片数组存储到文件夹和MySQL行的方式

$pictures       = array_filter($_FILES['pictures']['name']);
$total_pictures = count($_FILES['pictures']['name']);

for($i = 0; $i < $total_pictures; $i++)
{
    $tmpname = $_FILES['pictures']['tmp_name'][$i];
    if($tmpname != "")
    {
        $filepath = $target . $_FILES['pictures']['name'][$i];
        if(move_uploaded_file($tmpname, $filepath))
        {
            $picture_data  = Array(
                "product_id" => "$product_id",
                "picture" => "$pictures[$i]"
            );
            $insertpicture = $db->insert('products_pictures', $picture_data);
        }
    }
}
$pictures=array_filter($_FILES['pictures']['name']);
$total_pictures=计数($_文件['pictures']['name']);
对于($i=0;$i<$total_图片;$i++)
{
$tmpname=$\u文件['pictures']['tmp\u name'][$i];
如果($tmpname!=“”)
{
$filepath=$target.$\文件['pictures']['name'][$i];
如果(移动上传的文件($tmpname,$filepath))
{
$picture\u data=数组(
“产品标识”=>“$product\U id”,
“图片”=>“$pictures[$i]”
);
$insertpicture=$db->insert('products\u pictures',$picture\u data);
}
}
}

我试图在上传图片并将其名称存储到数据库之前重命名图片,但每次尝试时,都会出现与字符串和数组冲突相关的错误。

您可以每次使用此代码段生成唯一的ID并将其附加到文件名中

substr(md5(microtime(true).mt_Rand()),1,6);
它生成一个随机字符串值,对于较小的文件名,将其拆分为5个字符。它使用microtime获取当前时间,并基于该时间生成一个随机数,然后用md5散列


对于($i=0;$i<$total_图片;$i++)
{
$tmpname=$\u文件['pictures']['tmp\u name'][$i];
如果($tmpname!=“”)
{
$uniqHash=substr(md5(microtime(true).mt_Rand()),1,6);//生成5个字符的哈希
$filepath=$target.$\文件['pictures']['name'][$i];
if(move_uploaded_file($tmpname,$filepath.$uniqHash))//将哈希附加到$tmpname,使其每次都唯一
{
$picture\u data=数组(
“产品标识”=>“$product\U id”,
“图片”=>“$pictures[$i]”
);
$insertpicture=$db->insert('products\u pictures',$picture\u data);
}
}
}

1。请缩进您的代码以便我们阅读。。2.请张贴您尝试过的内容,以便我们可以帮助您找到答案。目前,你只是要求我们从头开始编写解决方案,你不需要在双引号中加变量。例如,
“product\u id”=>“$product\u id”
可以是
“product\u id”=>$product\u id,
是的,我要求从头开始写一个解决方案,因为它只是一行或两行代码,用于在我的图片中添加time()前缀或其他内容。我尝试了很多方法,但都以数组和字符串之间的冲突告终。我尝试了很多这样的片段,每次我出错,你能建议一种正确的方法在我的情况下使用这个片段吗?
'tmp\u name'
已经出现在文件数组中了吗?在答案中添加了代码,读一下里面的评论,让我知道你的意思!经过一些编辑,我使它按预期工作。非常有帮助的答案。有一种更简单的方法可以生成一个随机名称:
bin2hex(随机字节(3))