PHP图片上传和命名失败

问题描述:

我有一个小表单来添加类别。我的表中的字段有以下几种:PHP图片上传和命名失败

名称要求

说明不要求

照片不要求

这将创建与所有类别信息,它会ev将图像名称插入数据库中。

我遇到的问题是它不会将图像移动到上传文件夹。 此外,它将重命名图像如下:如果图像名称是avatar.jpg它将重命名它85789avatar.jpg在数据库字段中。

我需要它来重命名图像如下O1CCJDSXBOM2.jpg

最后一个问题是图像不是必需的,如果您将它留空,它仍然会在数据库字段中放置89439数字。

if (isset($_POST['submit'])) { 

     $Name = $_POST['name']; 
     $Description = $_POST['description']; 

     if (empty($Name)) { 
      $errors[] = "Name Required."; 
     } 
     if (!empty($errors)) { 
      echo validation_errors($errors[0]); 

     } else { 

     $file = rand(1000, 100000). $_FILES['photo']['name']; 
     $file_loc = $_FILES['photo']['tmp_name']; 
     $file_size = $_FILES['photo']['size']; 
     $folder = "uploads/"; 

     if (($file_size > 2097152)) {   

      echo validation_errors("Your avatar exceeds file size");   

     } else { 

     move_uploaded_file($file_loc, $folder, $file); 

     $db = dbconnect(); 
     $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
     $stmt->bind_param('sss', $Name, $Description, $file); 
     $stmt->execute();   
     $stmt->close(); 

     header("Location: managecategories.php");  
+0

“_it仍然把89439号在数据库field._” 的数据库字段? –

+0

照片字段 – Case

+0

这是否意味着一个值为_89439_或89439记录的记录? –

它不会将图像的上传文件夹还它,如下所示,将重命名的图像。如果映像名称是avatar.jpg TI将在数据库领域85789avatar.jpg其重命名为

move_uploaded_file()有两个参数,而不是三个。更新此行:

move_uploaded_file($file_loc, $folder, $file); 

对此(追加文件名的文件夹):

move_uploaded_file($file_loc, $folder . $file); 

的最后一个问题是图像不是必需的,如果你让它空白仍将89439号码放入数据库字段中。

因为move_uploaded_file()回报boolean,代码可以被更新,以仅当文件被上传成功插入一条记录。

if (move_uploaded_file($file_loc, $folder . $file)) { 
    $db = dbconnect(); 
    $stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)"); 
    $stmt->bind_param('sss', $Name, $Description, $file); 
    $stmt->execute();   
    $stmt->close(); 
} 
+0

它没有改变任何东西 – Case

+0

我按照你的建议修改了它仍然没有上传文件,最后一部分如果上传你的代码不允许任何字段添加数据 – Case

+0

你确定用户php运行写入该上传目录的权限? –