【问题标题】:php form upload and remane image then insert into DBphp表单上传和remane图像然后插入数据库
【发布时间】:2016-08-17 21:49:52
【问题描述】:

我有一个已经在运行的表单,可以将数据插入到数据库中,我还有 4x 图像文件输入,然后表单添加所有数据,上传图像并重命名图像以匹配下一个 ID,并在文件名中添加随机结尾.

这一切都按预期工作

但我现在需要将文件名添加到数据库中,有时表单会有 1x 图像,有时 4x 图像,但我不确定如何通过以下代码将文件名存储在 db 中。谁能帮忙?我认为数组需要分解为单独的文件名,但不知道该怎么做。

    <?php
if(isset($_POST['submit'])){ 

// Variables for date&Time logs
$dateLog = date("y-m-d"); // DATE OF  ADDITION
$timeLog = date("H:i:s", time() - 3600);   // TIME OF ADDITION 

// INSERT QUERY
$sql="INSERT INTO $table1 (firstname, lastname, companyname, phone, email, name, make, serial, catagory, price, location, description, sold, operational, year, clear, rip, version, service, dock, loading, available, extras, dateadded, featured)
VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[companyname]','$dateLog','No')";


$query = mysql_query($sql) or die("Cannot query the database.<br>" . mysql_error());

// start of image upload
$insert_id = mysql_insert_id() or die("Unable to get insert id for image name.<br>" . mysql_error());

extract($_POST);
    $error=array();
    $extension=array("jpeg","jpg","png","gif");
    foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name)
            {
                $file_name=$_FILES["files"]["name"][$key];
                $file_tmp=$_FILES["files"]["tmp_name"][$key];
                $ext=pathinfo($file_name,PATHINFO_EXTENSION);
                if(in_array($ext,$extension))
                {
                    if(!file_exists("../images/listings/".$txtGalleryName."/".$file_name))
                    {
                        $filename=basename($file_name,$ext);
                        $newFileName=$insert_id."_".mt_rand(1, 99999).".".$ext;
                        move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"../images/listings/".$txtGalleryName."/".$newFileName);
                    }
                    else
                    {
                        $filename=basename($file_name,$ext);
                        $newFileName=$filename.mt_rand(1, 99999).".".$ext;
                        move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"../images/listings/".$txtGalleryName."/".$newFileName);
                    }
                }
                else
                {
                    array_push($error,"$file_name, ");
                }
            }
// end of image upload

echo '<p>This item was added successfully</p>';

}
?>

还有我的表格;

1: Upload : <input type="file" name="files[]"/><br />
2: Upload : <input type="file" name="files[]"/><br />
3: Upload : <input type="file" name="files[]"/><br />
4: Upload : <input type="file" name="files[]"/><br />

感谢任何帮助:)

【问题讨论】:

    标签: php forms upload rename


    【解决方案1】:

    您可以使用 $rename_var = rand('111111','999999');并将其添加到文件名之前,例如 $new_changed_name = $rename_var.$_FILES['files']['name'];然后在将文件保存在文件夹中时使用此名称,如下所示 .. move_uploaded_file('tmp_name','path/'.$new_changed_name); 并将这个 $new_changed_name 新名称插入数据库。

    【讨论】:

    • 会为循环中的每个文件执行此操作吗?
    • 通过在循环中执行此操作,您的所有图像都将被重命名...新名称将像 6 个随机数字加上您的文件的原始名称...如果您上传 abc.jpg ,则新名称将类似于 121122abc.jpg .. 6 个随机数字前缀。
    • 我如何将它添加到数据库中?作为数组>?
    • 尝试类似 $rename_var = rand('111111','999999'); $file_name= $rename_var.$_FILES["files"]["name"][$key];并将其用作新名称.. 您不必检查文件夹中的图像是否存在,因为名称将带有六个随机数字。并且您的图像名称不会与新上传的图像名称冲突。
    • 您需要像这样使用插入图像mysql查询与主查询中的insert_id $insert_img_query = "insert into images(name,insert_id) values ('".$newFileName."','" .$insert_id."')"; mysql_query($insert_img_query);在 move_uploaded_file 函数下,我假设 images 是数据库表名。
    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2012-11-26
    • 2013-05-06
    相关资源
    最近更新 更多