Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数据库中的图像上传和保存_Php_Database_Image_Upload_Save - Fatal编程技术网

Php 数据库中的图像上传和保存

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 =

我的主要目标是保存文件夹中每个上传的图像,使其具有uniqe名称。我这样做了,但不管它有什么uniqe名称,在DB中它仍然有旧的原始名称,我如何在DB中保存相同的uniqe名称? 我的代码是:

<?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