-3

这是我的问题,当有人上传图像时,我需要重命名图像,我想使用日期和时间并创建 $datatime 值,但我不知道如何使它工作,有人能告诉我该怎么做吗?非常感谢任何帮助...非常感谢

<?php if(isset($_POST['action'])=='uploadfiles') {
$time = time();
$date = date('Y-m-d');
$datetime = "$time" . "$date";

$upload_directory   ='uploads/';  
$count_data         =count($_FILES['data']) ;
$upload             = $_FILES['data']['name'][$x].',';  

for($x=0;$x<$count_data;$x++) {
    $upload .= $_FILES['data']['name']["$x" . ""].',';
    move_uploaded_file($_FILES['data']['tmp_name'][$x], $upload_directory . $_FILES['data']['name'][$x]); ##### upload into your directory     }

//echo "upload successfully..";
$con="INSERT INTO inmuebles (foto1) values ('$upload')";
$query=mysql_query($con); } ?>
4

3 回答 3

2

在这里更改:

move_uploaded_file(
  $_FILES['data']['tmp_name'][$x],
  $upload_directory . $datetime . $_FILES['data']['name'][$x]
); ##### upload into your directory

这里$datetime应该是包含时间戳的字符串。

于 2013-09-20T20:15:27.913 回答
0

尝试以下操作:

$ext = pathinfo($_FILES['data']['name'][$x], PATHINFO_EXTENSION);
$newname = $datetime . '.' . $ext;
move_uploaded_file($_FILES['data']['tmp_name'][$x],
                   $upload_directory . $newname);

这将替换当前文件名,并保持最初上传文件的扩展名。

如果您想保留原始文件名并简单地附加datetime它,请使用以下内容:

$info = pathinfo($_FILES['data']['name'][$x]);
$ext = $info['extension'];
$name = $info['filename'];
$newname = $name . $datetime . '.' . $ext;
move_uploaded_file($_FILES['data']['tmp_name'][$x],
                   $upload_directory . $newname);
于 2013-09-20T20:17:53.967 回答
0

使用日期和时间是唯一标记任何内容的糟糕方法,因为您的保真度限制是每秒 1 个项目,而计算机的速度要比这快得多,而且可能有超过 1 个人同时使用上传。而是使用为此构建的东西,例如 UUID(又名 GUID)。您可以在 PHP 中使用非常基本的 uniqid() 函数,或者如果您阅读评论有人编写了 UUID 函数(使用版本 5)。

http://php.net/manual/en/function.uniqid.php

于 2013-09-20T20:22:10.330 回答