Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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_File Upload - Fatal编程技术网

Php图像上载和命名失败

Php图像上载和命名失败,php,file-upload,Php,File Upload,我有一个小表单来添加类别。我的表格字段如下所示: 名称必填项 说明不需要 照片不需要 它将创建一个包含所有信息的类别,甚至将在数据库中插入图像名称 我遇到的问题是它不会将图像移动到uploads文件夹。 此外,它将按照如下方式重命名图像:如果图像名称为avatar.jpg,它将在数据库字段中将其重命名为85789avatar.jpg if (isset($_POST['submit'])) { $Name = $_POST['name']; $Descrip

我有一个小表单来添加类别。我的表格字段如下所示:

名称必填项

说明不需要

照片不需要

它将创建一个包含所有信息的类别,甚至将在数据库中插入图像名称

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

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");      
我需要它将图像重命名为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");      
它不会将图像移动到uploads文件夹,还会按如下方式重命名图像。如果图像名称为avatar.jpg,ti将在数据库字段中将其重命名为85789avatar.jpg

接受两个参数,而不是三个。更新此行:

move_uploaded_file($file_loc, $folder, $file);
为此(要将文件名附加到文件夹):

最后一个问题是图像不是必需的,如果您将其留空,它仍然会在数据库字段中输入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");      
因为返回一个,所以只有成功上载文件时,才能更新代码以插入记录

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(); 
}

它没有改变我编辑的任何内容,因为你建议它仍然不会上载文件,最后一部分如果上载你的代码不允许任何字段添加数据,你确定用户php正在以有权限写入该上载目录的方式运行吗?我刚试着下载了一个脚本,它会将图像移动到文件夹中。。所以权限是好的,代码中有些错误。在调用move\u uploaded\u file()之前,是否检查
$\u FILES['photo']['error']
的值?查看它有什么值,并交叉检查“它仍然将89439个数字放入数据库字段”上的值。哪个数据库字段?照片字段这是指一条值为89439的记录,还是89439条记录?