Php 数据库中的图像上传和保存
我的主要目标是保存文件夹中每个上传的图像,使其具有uniqe名称。我这样做了,但不管它有什么uniqe名称,在DB中它仍然有旧的原始名称,我如何在DB中保存相同的uniqe名称? 我的代码是:Php 数据库中的图像上传和保存,php,database,image,upload,save,Php,Database,Image,Upload,Save,我的主要目标是保存文件夹中每个上传的图像,使其具有uniqe名称。我这样做了,但不管它有什么uniqe名称,在DB中它仍然有旧的原始名称,我如何在DB中保存相同的uniqe名称? 我的代码是: <?php if(isset($_SESSION['username'])){ if(isset($_POST['upload'])) { $allowed_filetypes = array('.jpg','.jpeg','.png','.gif'); $max_size =
<?php
if(isset($_SESSION['username'])){
if(isset($_POST['upload'])) {
$allowed_filetypes = array('.jpg','.jpeg','.png','.gif');
$max_size = "100000"; /// 1 Мегабайт
$max_height = "90000"; /// 300 Килобайта
$max_width = "90000"; /// 300 Килобайта
$upload_path = 'gallery/';
$random = md5(time());
$filename = $_FILES['userfile']['name'];
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
if(!in_array($ext,$allowed_filetypes))
die('The file you attempted to upload is not allowed.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_size)
die('Прекалено е тежка снимката.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_height)
die('Прекалено е голяма снимка във височина.');
if(filesize($_FILES['userfile']['tmp_name']) > $max_width)
die('Прекалено е голяма снимка във височина.');
if(!is_writable($upload_path))
die('You cannot upload to the specified directory, please CHMOD it to 777.');
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path .$random . $filename)) {
$q = mysqli_query($connection,"UPDATE users SET avatar='".$_FILES['userfile']['name']."' WHERE username ='".$_SESSION['username']."'");
echo "<font color='#5cb85c'>Браво, успешно си качил/а профилна снимка!</font>";
} else {
echo 'There was an error during the file upload. Please try again.';
}
}
echo ' <form action="images.php" method="post" enctype="multipart/form-data"> ';
echo ' <input type="file" name="userfile"/>';
echo ' <input type="submit" name="upload" value="Качи">';
echo ' </form>';
}
else
{
echo "<font color='#ec3f8c'>Съжелявам! За да качиш снимка във профила си, <a href='login.php'><font color='#ec3f8c'><b> трябва да се логнеш</b> </font></a></font>";
}
?>
谁能给我解释一下,我还需要补充什么 如果我了解问题所在,则图像将以正确的唯一名称保存在文件系统中。这是$upload_path.$random$文件名,但数据库中的引用错误 只需替换查询即可
UPDATE users SET avatar='".$_FILES['userfile']['name'].
与
嗯,,
Marcello非常感谢你,我的朋友,它100%有效:完美代码::还有一个问题Marcello。现在一切都好了。但当我试图上传的图像谁的名字在cyrlic上,最后它显示为断开的链接,我必须添加更多的代码,这将允许我加载这种图像?可能有些西里尔字符是不兼容的编码所使用的文件系统。保留图像的原始名称对您来说重要吗?如果没有,您可以简单地使用$upload_path.$random而不是$upload_path.$random$文件名。如果是的话,你也应该这样做,然后将原始名称存储在数据库中以备将来使用。非常感谢Marcello:但是现在我已经解决了所有奇怪的问题。现在一切都好了。我删除了@filename。但是当我试图保存为图片时,它最终没有.jpeg.png,什么都没有?我怎样才能解决这个问题?对不起,问题太多了。但是我非常感谢您的帮助:没错,文件扩展名是文件名的一部分,因此,如果我们删除文件名,我们将丢失扩展名:您可以从文件名中提取文件扩展名,然后将其附加到结果字符串中,如下所示:$ext=pathinfo$filename,pathinfo\u extension;并使用$upload\u路径$随机的$文件名为“”$如果这些答案有用,别忘了投票支持:
UPDATE users SET avatar='".$upload_path .$random . $filename