如何在php中上传之前动态重命名图像

时间:2014-08-02 02:05:23

标签: php html mysql

我是php的新手并试图建立一个注册系统,每个用户都必须上传他或她的图像。我想使用名称作为用户ID保存图像,以便没有图像可以具有相同的名称,但我不知道如何操作。请帮忙..!!

以下是代码

<form enctype="multipart/form-data" action="uploader.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
Choose a file to upload: 
<input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>


<?php $target_path = "uploads/";

/* Add the original filename to our target path.  
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
 header("Location: contactinfo.php");
} else{
    echo "There was an error uploading the file, please try again!";
}

&GT;

4 个答案:

答案 0 :(得分:0)

在你的

target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

这将是包含新文件路径的名称,因此如果要重命名,只需键入

即可
filename=$_FILES["file"]["name"];
$extension=end(explode(".", $filename));
$newfilename="file_". $userid .".".$extension;

答案 1 :(得分:0)

而不是这样做:

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

尝试这样做:

$target_path = $target_path . $userid . '.jpg';

$target_path之后的数据确定文件名将是什么。

信任用户浏览器提供的扩展名(.gif,.jpg,.png)并不总是安全的。也不信任$_FILES["uploadedfile"]["type"]。 如果您还允许用户上传SVG,GIF,PNG或其他图片类型,则可以根据文件的内容类型猜测正确的扩展名,该内容类型通过FileinfoGD确定。

答案 2 :(得分:0)

例如:

$ target_path = strtotime(日期(&#39; Y-m-d H:i:s&#39;));

move_uploaded_file($ _ FILES [&#39;上传文件&#39;] [&#39; tmp_name&#39;],$ target_path);

要使用唯一ID保存,您可以在新图片的名称中使用strtotime(日期(&#39; Y-m-d H:i:s&#39;))。

如果您有更多问题,可以加我http://www.newvibe.ca/ludovic.ledoux

答案 3 :(得分:0)

通常,如果您允许用户上传相同的文件名多次次而不覆盖旧文件,请使用uniqid();

在文件名中插入随机文本

$target_path = $target_path . uniqid($user_id) . basename( $_FILES['uploadedfile']['name']);

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