上传时重命名图像文件

时间:2015-05-09 09:49:27

标签: php

我需要帮助在使用php重命名上传图像文件。我想用用户的用户ID和像userid-1.jpg,userid-2.jpg,userid-3.jpg等计数器重命名我的图像,具体取决于用户上传的图像数量。 到目前为止,我有这个代码,并不能让这个工作..

$id = $GET['id'];
$ds = DIRECTORY_SEPARATOR;
$upload_dir = '../uploads';

 if(isset($_POST['submit']) && $_POST['submit'] != null) {
    for ($i = 0; $i < count($_FILES['files']['name']); $i++) {
        $tempfile= $_FILES['files']['tmp_name'][$i];

        if ($tempfile != "") {
            $newFilePath = $upload_dir. $_FILES['files']['name'][$i];
            move_uploaded_file($tempfile, $newFilePath);
        }
    }
}

请给我一个关于如何纠正这个问题的想法。

2 个答案:

答案 0 :(得分:1)

首先,您要在intval()

上使用$_GET['id']

然后在move_uploaded_file中修改目标路径:

$id = intval($GET['id']);
$ds = DIRECTORY_SEPARATOR;
$upload_dir = '..'.$ds.'uploads'.$ds;

 if(isset($_POST['submit']) && $_POST['submit'] != null) {
    for ($i = 0; $i < count($_FILES['files']['name']); $i++) {
        $tempfile= $_FILES['files']['tmp_name'][$i];
        if ($tempfile != "") {
            $newFilePath = $upload_dir.'user_'.$id.'_'.time();
            move_uploaded_file($tempfile, $newFilePath);
        }
    }
}

在移动之前检查文件类型(以便人们不上传php文件......):http://php.net/manual/en/function.exif-imagetype.php

这样您还可以确定文件扩展名必须是什么。

另外,为了确定,不要将你的上传文件夹改为777,只需给予apache所有权就更安全了。

答案 1 :(得分:0)

$newFilePath = $upload_dir. $_FILES['files']['name'][$i];应更改为您想要的watever名称;作为$newFilePath = "".$upload_dir."/vikas.jpg";