如何在每次php会话中将图像上传到一个新的唯一文件夹


How to upload images to a new unique folder every session php

我正在为我父亲制作一个网站,允许人们上传自己的个人图像,因为他是一名窗户清洁技术人员。他想让人们能够上传自己的图像,这样他就可以给他们一个成本估算。下面,我有两段代码。第一位成功上传图像。那我就不用担心了。然而,第二个比特没有成功上传图像。我想实现的是,每次用户上传一组图像(最多5张)时,它都会在一个目录中创建一个新文件夹,将当前时间设置为文件夹的名称,这样他就更容易跟踪谁发送了什么。我仍在研究他如何仅根据图像识别一个人的一些细节(也许一个人会在发送图像后打电话核实提交时间?)。我试图在尽可能少使用数据库的情况下做到这一点,因为我不知道如何使用MySQL并将其与PHP联系起来。

这是一个有效的代码,并成功地将图像上传到/上传到:

<?php
    $uploadpath = 'upload/';
    $max_size = 4000;
    $allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png');
    if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1){
        $uploadpath = $uploadpath . basename( $_FILES['fileup']['name']);
        $sepext = explode('.', strtolower($_FILES['fileup']['name']));
        $type = end($sepext);
        list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);
        $err = '';
        if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> does not have an allowed extension type.';
        if($_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>Your file exceeds the '. $max_size. ' KB. size limit.';
        if($err == ''){
            if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)){ 
                echo 'File: <b>'. basename( $_FILES['fileup']['name']). '</b> successfully uploaded:';
                echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>';
            }
            else echo '<b>Unable to upload the file.</b>';
        }
        else echo $err;
    }
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    <input type="submit" name='submit' value="Upload" /> 
</form>

这是我试图更改的代码,以创建一个以时间戳为名称的新文件夹:

<?php
    $uploadpath = 'upload/';
    $max_size = 4000;
    $allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png');
    if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1){
        $uploadpath = $uploadpath . basename( $_FILES['fileup']['name']);
        $sepext = explode('.', strtolower($_FILES['fileup']['name']));
        $type = end($sepext);
        list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);
        $err = '';
        if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> does not have an allowed extension type.';
        if($_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>Your file exceeds the '. $max_size. ' KB. size limit.';
        if($err == ''){
            $uploadpath = "upload/" . time();
            $count = 0;
            foreach ($_FILES['fileup']['name'] as $filename){
                $temp = $_FILES['fileup']['tmp_name'][$count];
                move_uploaded_file($temp, $uploadpath . '/' . $filename);
                $count++;
            }
            if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)){ 
                echo 'File: <b>'. basename( $_FILES['fileup']['name']). '</b> successfully uploaded:';
                echo '<br/>File type: <b>'. $_FILES['fileup']['type'] .'</b>';
            }
            else echo '<b>Unable to upload the file.</b>';
        }
        else echo $err;
    }
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    Upload File: <input type="file" name="fileup" /><br/>
    <input type="submit" name='submit' value="Upload" /> 
</form>

两者之间的主要区别是在if($err == '')之后,代码的第二位在这里又有一个块来替换原始的"移动文件"命令

我刚刚为我叔叔的公司做了类似的事情。为了解决你不知道让对方提交信息的好方法的问题,你可以创建一个表格,记录信息,然后向你父亲的工作电子邮件发送电子邮件。下面是php邮件函数的一个示例。

$to = 'service@anywhere.com';
$subject = 'New Service Request:';
$time = date('l jS 'of F Y h:i:s A');
$body = "New Service Request Submited - $time (time is coming from webserver)'nFirst   Name: ".$_POST['fname']."
Last Name:'n ".$_POST['lname']."
Title:'n ".$_POST['title']."
Business:'n ".$_POST['business']."
Phone:'n ".$_POST['phone']."
Email:'n ".$_POST['email']."
Address:'n ".$_POST['address']."
Preferred Method of Contact:'n ".$method."
Equipment Type:'n ".$_POST['type']."
Equipment Issue:'n ".$_POST['issue']."
Additional Comments:'n ".$_POST['comments'];
$headers = 'From: Request Generator <noreply@anything.com>';
mail($to, $subject, $body, $headers);

电子邮件地址可以是任何你想要的。唯一的要求是你有一个邮件服务器运行在你的网站所在的地方(几乎所有的托管公司都提供一个电子邮件服务器除了网络服务器)。在页眉部分,您会注意到前面的文本。该文本显示为发送电子邮件的"人员"的姓名,以及<>是它的"地址",它不必是真实的。

在我的身体里,我留下了为我叔叔生成门票的文本,以提供一个你可能希望或不希望你的门票看起来像什么的例子。

对于您的上传错误,乍一看,您似乎从未创建要上传内容的动态文件夹。尝试:

mkdir($uploadpath);

在创建或移动目录中的任何文件之前。