【发布时间】:2015-03-23 13:04:19
【问题描述】:
我有一个“个人资料图片”系统,每个注册用户都可以更改他们的个人资料图片,以便显示图片。上传的过程是将图片上传到名为pictures的文件夹中,然后将文件名写入名为"picture"的数据库行中,它可以工作,一切都很好,但我需要知道如何对上传的图片名称进行哈希处理所以如果两个人有不同的图片,但是同名的图片会上传一个文件,那就有问题了...
这是我的提交表单:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="submit">
</form>
我有此代码用于将文件上传到文件夹和数据库行:
<?php
if(isset($_POST['submit'])){
move_uploaded_file($_FILES['file']['tmp_name'],"pictures/".$user_id.$_FILES['file']['name']);
$con = mysqli_connect("host","name","pass","db");
$q = mysqli_query($con,"UPDATE members SET picture = '".$_FILES['file']['name']."' WHERE username = '".$_SESSION['username']."'");
}
?>
这是在网站上显示图片的代码:
<?php
$con = mysqli_connect("host","name","pass","db");
$q = mysqli_query($con,"SELECT * FROM members WHERE username = '".$_SESSION['username']."'");
while($row = mysqli_fetch_assoc($q)){
if($row['picture'] == ""){
echo " <img src='pictures/public_icon.png' width='25' height='25'>"; *//This is default pic//*
} else {
echo " <img width='25' height='25' src='pictures/".$row['picture']."' alt='Profile Pic'>"; *//And this is pic from db row//*
}
}
?>
我想知道如何在上传的文件夹和数据库行中对这张图片的名称进行散列... 我可以这样做吗?我会用 db 中的“id”和“date”行对其进行哈希处理,但我不知道如何..:/
【问题讨论】:
-
您可以附加随机字符串或数字来解决此问题。
-
@Toretto - 怎么做?
-
您也可以在服务器端更改上传的文件名,这样就不会有冲突
-
@SumitPatil - 抱歉,我不知道该怎么做:|