php - 如何将多个图像路径存储在一个数组中,以将php的多个图像上传的值存储在数据库中

标签 php mysql

如何将多个图像路径存储在一个数组中,以便将 PHP 的多个图像上传的值存储在数据库中的单行中 我想将路径存储在一个数组中,该数组将在一行中存储不同的路径

<html xmlns="http://www.w3.org/1999/xhtml">
    <body>

    <?php

class Upload_Rename
{
    const ALLOWED_TYPES = "jpg,gif,png";
    public static function generate_new_name($extension, $uppercase = true, $prefix = '', $sufix = '')
    {
        $new_name = $prefix . uniqid() . '_' . time() . $sufix;
        return ($uppercase ? strtoupper($new_name) : $new_name) . '.' . $extension;
    }

    public static function check_and_get_extension($file)
    {
        $file_part     = pathinfo($file);
        $allowed_types = explode(",", Upload_Rename::ALLOWED_TYPES);
        if (!in_array($file_part['extension'], $allowed_types)) {
            throw new Exception('Not ok.. bad bad file type.');
        }
        return $file_part['extension'];
    }

    public function upload($file, $target_destination)
    {
        if (!isset($file['tmp_name'])) {
            throw new Exception('Whaaaat?');
        }
        $_name          = $file['name'];
        $_tmp           = $file['tmp_name'];
        $_type          = $file['type'];
        $_size          = $file['size'];
        $file_extension = '';
        try {
            $file_extension = Upload_Rename::check_and_get_extension($_name);
        }
        catch (Exception $e) {
            throw new Exception('Ops.. file extension? what? ' . $e->getMessage());
        }
        $new_name    = Upload_Rename::generate_new_name($file_extension, true, 'whaat_', '_okey');
        $destination = $target_destination . DIRECTORY_SEPARATOR . $new_name;
        move_uploaded_file($_tmp, $destination);
        return $destination;
    }

    public function multiple_files($files, $destination)
    {
        $number_of_files = isset($files['tmp_name']) ? sizeof($files['tmp_name']) : 0;
        $errors          = array();
        $paths           = array();
        for ($i = 0; $i < $number_of_files; $i++) {
            if (isset($files['tmp_name'][$i]) && !empty($files['tmp_name'][$i])) {
                try {
                    $path    = $this->upload(array(
                        'name' => $files['name'][$i],
                        'tmp_name' => $files['tmp_name'][$i],
                        'size' => $files['size'][$i],
                        'type' => $files['type'][$i]
                    ), $destination);
                    $paths[] = $path;
                }
                catch (Exception $e) {
                    array_push($errors, array(
                        'file' => $files['name'][$i],
                        'error' => $e->getMessage()
                    ));
                }
            }
        }
        return $paths;
    }

}

if ($_FILES) {
    $upload      = new Upload_Rename();
    $destination = 'upload';
    $paths       = $upload->multiple_files($_FILES['myfile'], $destination);

    //Fill this with correct information
    $mysql_hostname = "";
    $mysql_user     = "";
    $mysql_password = "";
    $mysql_database = "";
    $tbl_name       = "test";
    $pathfield_name = 'path';
    //
    $con            = mysql_connect("localhost", "root", "");
    myesql_select_db("db1", $con);
    foreach ($paths as $path) {
        $query = 'INSERT INTO `' . $tbl_name . '` (`' . $pathfield_name . '`) VALUES ("' . $mysql->escape_string($path) . '");';
        mysql_query($query);
    }
    $mysql_close($con);
}
?>

    <form  method="post" enctype="multipart/form-data">
    <?php
for ($i = 0; $i < 10; $i++):
?>
   file: <input type="file" name="myfile[]"><br>
    <?php
endfor;
?>
   <input type="submit">
    </form>
    </body>
    </html>

最佳答案

    Hope this one will help you.


if (isset($_FILES['filetoupload']['name'])) {
        $file_name_all = "";
        $randomString = "";

        for ($i = 0; $i < count($_FILES['filetoupload']['name']); $i++) {

            $characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            for ($j = 0; $j < 7; $j++) {
                $randomString .= $characters[rand(0, strlen($characters) - 1)];
            }

            $tmpFilePath = $_FILES['filetoupload']['tmp_name'][$i];
            if ($tmpFilePath != "") {
                $path = "../views/uploads/";
                $name = $_FILES['filetoupload']['name'][$i];
                // $size = $_FILES['filetoupload']['size'][$i];

                list($txt, $ext) = explode(".", $name);
                //$file= time().substr(str_replace(" ", "_", $txt), 0);
                $file = $randomString . substr(str_replace(" ", "_", $txt), 0);
                $info = pathinfo($file);
                $filename = $file . "." . $ext;
                if (move_uploaded_file($_`if (isset($_FILES['filetoupload']['name'])) {
        $file_name_all = "";
        $randomString = "";

        for ($i = 0; $i < count($_FILES['filetoupload']['name']); $i++) {

            $characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            for ($j = 0; $j < 7; $j++) {
                $randomString .= $characters[rand(0, strlen($characters) - 1)];
            }

            $tmpFilePath = $_FILES['filetoupload']['tmp_name'][$i];
            if ($tmpFilePath != "") {
                $path = "../views/uploads/";
                $name = $_FILES['filetoupload']['name'][$i];
                // $size = $_FILES['filetoupload']['size'][$i];

                list($txt, $ext) = explode(".", $name);
                //$file= time().substr(str_replace(" ", "_", $txt), 0);
                $file = $randomString . substr(str_replace(" ", "_", $txt), 0);
                $info = pathinfo($file);
                $filename = $file . "." . $ext;
                if (move_uploaded_file($_FILES['filetoupload']['tmp_name'][$i], $path . $filename)) {
                    $file_name_all.=$filename . "*";
                }
            }
        }

        $finalFileNames = rtrim($file_name_all, '*'); //imagepath if it is present  
        $insertMsgImages = mysql_query("insert into conversation_messages_tbl(postedby_userid,topic_id,message,image,posted_timestamp,upload_img,is_active,member_id) values('$user_id','$topic_id','$message','$finalFileNames','$posted_timestamp','$finalFileNames','1','$member_id')");
    }`FILES['filetoupload']['tmp_name'][$i], $path . $filename)) {
                    $file_name_all.=$filename . "*";
                }
            }
        }

        $finalFileNames = rtrim($file_name_all, '*'); //imagepath if it is present  
        $insertMsgImages = mysql_query("insert into conversation_messages_tbl(postedby_userid,topic_id,message,image,posted_timestamp,upload_img,is_active,member_id) values('$user_id','$topic_id','$message','$finalFileNames','$posted_timestamp','$finalFileNames','1','$member_id')");
    }

关于php - 如何将多个图像路径存储在一个数组中,以将php的多个图像上传的值存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28940007/

相关文章:

php - Laravel orderBy 关系

php - PHP将整数转换为32位(4字节)十六进制以进行套接字编程

php - php mysql 中的存储过程 - phpmyadmin

mysql - 计算 SQL 中不同列的数量

mysql - 第二个插入在我的触发器中不起作用

php - 哪个数据库用于处理非常大的结果集?

PHP 设计模式 - 继承与适配器模式?

php - PHP 中 SoapServer 的默认 Soap 版本是什么?

php - 使用 LEFT JOIN 未按预期工作

php - 如何将mysql行存储到私有(private)数组变量中?