当前位置: 首页 > 知识库问答 >
问题:

PHP将4个图像上传到文件,并将其路径上传到数据库MYSQL

吴驰
2023-03-14

这几天来,我一直对这个问题耿耿于怀,似乎在任何地方都找不到正确的答案。任何帮助都将不胜感激!

最终目标:让用户上传最多4张图片。检查错误。使用文件名上传图片到文件系统中的用户文件夹中(mkdir如果不存在),将文件路径存储在SQL表的相应部分。

我不断地改变事情以获得部分结果,现在我已经把自己编码成了一个大习惯。如果您有任何问题,请告诉我,甚至可以建议一个更好的方法来实现最终目标。

谢谢!!

SQL表:post\u id、user\u id、created、post\u title、short\u descripp、Long\u descripp、image1、image1\u cap、image2、image2\u cap、image3、image3\u cap、image4\u cap

<form method ='post' enctype='multipart/form-data' action='/posts/p_add'>
<h1><label for = 'content'>CREATE POST:</label><br></h1>
Post Title <input type='text' name='post_title'><br><br>
Short Description <input type='text' name='shortDescrip'><br><br>
Long Description<textarea name = 'longDescrip' id = 'longDescrip'></textarea>
<br><br>

<label for="image1">Image 1:</label>
<input type="file" name="image1" id="image1"><br>
Image Caption<input type='text' name='image1_cap'><br>

<label for="image2">Image 2:</label>
<input type="file" name="image2" id="image2"><br>
Image Caption<input type='text' name='image2_cap'><br>

<label for="image3">Image 3:</label>
<input type="file" name="image3" id="image3"><br>
Image Caption<input type='text' name='image3_cap'><br>

<label for="image4">Image 4:</label>
<input type="file" name="image4" id="image4"><br>
Image Caption<input type='text' name='image4_cap'><br>

<input type = 'Submit' value = 'POST'>
</form>
public function p_add(){
        # associate post with the user
        $_POST['user_id'] = $this->user->user_id;

        # unix timestamp for created & modified
        $_POST['created'] = Time::now();
        $filename = $_POST['filename'];

        # create file path for images
        $imgPath = '/uploads/images/'.$this->user->user_id.'/';
        if (!file_exists($imgPath)){
            mkdir($imgPath, 0777, true);
        }
        if ($_FILES["file"]["error"] == 0){
                for($x=1; $x<=4 ; $x++){
                    //print_r($_FILES);
                    # upload the user-chosen file and save to img file

                    $image = Upload::upload($_FILES, 'uploads/images/', 
                        array("jpg", "JPG", "jpeg", "JPEG", "gif", "GIF", "png", "PNG"), $filename);
                    print_r($image);
                    # notify of error 
                    if($image == 'Invalid file type.') {
                        echo "invalid file type";
                    }
                    else {
                        # add to DB                
                        $data = Array("image".$x => $image);
                        DB::instance(DB_NAME)->insert('posts', $data);

                        # resize the image and save again
                        /*$imgObj = new Image($_SERVER["DOCUMENT_ROOT"].'/uploads/images/'.$image);
                        $imgObj->resize(100,100,"crop");
                        $imgObj->save_image($_SERVER["DOCUMENT_ROOT"].'/uploads/images/'.$image);*/
                    }
                }
            }else{
                # if there is an error let it be known
                echo "there has been an error"; 
            }

        # insert into db
        DB::instance(DB_NAME)->insert('posts', $_POST);

        # feedback
        echo "Your post was added";
    }

从框架上传功能:

public static function upload($file_obj, $upload_dir, $allowed_files, $new_file_name = NULL) {      

    # Access first element in file_obj array (b/c we're dealing with single file uploads only)
    $key = key($file_obj);

    $original_file_name = $file_obj[$key]['name'];
    $temp_file          = $file_obj[$key]['tmp_name'];
    $upload_dir         = $upload_dir;

    # If new file name not given, use original file name
    if($new_file_name == NULL) $new_file_name = $original_file_name;

    $file_parts  = pathinfo($original_file_name);
    $target_file = getcwd().$upload_dir . $new_file_name . "." . $file_parts['extension'];

    # Validate the filetype
    if (in_array($file_parts['extension'], $allowed_files)) {

        # Save the file
            move_uploaded_file($temp_file,$target_file);
            return $new_file_name . "." . $file_parts['extension'];

    } else {
        return 'Invalid file type.';
    }

}

共有1个答案

袁良弼
2023-03-14

indexname中有一个错误:

 if ($_FILES["file"])...

您没有

 if ($_FILES["image1"]["error"] == 0)

在这种情况下重写代码。

更新:

非常有趣的上传功能...糟糕的解决方案。

试试这个:

$image = Upload::upload(array($_FILES['image'.$x]), 'uploads/images/', 

 类似资料:
  • 问题内容: Upload.php: 这是表格(在单独的文件中): 错误是 ($ Filename = $ _ POST [‘Filename’];) 和 (回显“文件“。basename($ _FILES [‘uploadedfile’] [‘Filename’])。”已经上传,并且您的信息已添加到目录中“;) 给我: 问题答案: 首先,您应该使用它进行调试,然后查看其中包含的内容。: 您将看起来

  • 日安!我正在尝试搜索一个从Android上传一个图像文件到一个在线MySQL数据库的基本教程,但是我找不到任何。 我现在正在做一个activity,可以把用户的个人资料图片从Android上传到在线服务器上。 我需要的是像显示一个按钮,当它被点击时,用户可以从文件中选择一个图像。有人能指导我做这件事吗?提前道谢!

  • 我有一个带有文件输入字段的表单: 然后我做的东西与此图像文件提交: 我要保存图像的目录名为,与上面的目录相同。 您可能会注意到,在上面我在类insertBlog`的代码是: 当用户填写表单时,除了图像信息之外,它还将所有其他信息正确地存储在MySQL表中。此外,它不会将实际图像存储在文件夹中。那么,如何让这个脚本将图像上传到文件夹,并将其路径存储在mysql表中呢。目前,它没有将图像存储在数据库中

  • 问题内容: 我想将图像的下载URL放入Firebase数据库中。我可以将图像上传到存储中,但无法弄清楚如何将URL与其余的“帖子”一起放入数据库。 问题答案: 像这样组织您和func: 接下来,只需连接并保存到您的节点即可。 您也可以查看我有关上传数据并将URL保存到数据库的答案 希望能帮助到你

  • 我不懂Python语言。有人能帮我理解我是否正确地将此转换为PHP吗?我想用PHP上传一个文件到http://telegra.ph,但是我不知道如何从PHP上传。 以下代码是Python Telegraph API包装库中的一个示例: 这是我的PHP代码,不起作用。有什么不对劲吗? 当我运行此代码时,我看到以下错误: 警告:复制(telegra.ph/upload):无法打开流:HTTP包装器不支

  • 我正在使用一个Vaadin上传组件,到目前为止,我已经成功地将一个图像上传到一个目录,并在成功上传后在面板组件中显示它。在这之后,我想做的是把它也插入到数据库中。我有一个名为Show的表,它有一个名称、日期和图像。在Show类中,我尝试将图像作为字节数组或Blob。 在上传成功的方法中,我想将文件转换为字节数组,到目前为止我已经尝试过了: 我也试过: uIP它实际上是我的上传ImagePresen