簡體   English   中英

如何在每個會話php中將圖像上傳到新的唯一文件夾

[英]How to upload images to a new unique folder every session php

我正在為我的父親創建一個網站,該網站允許人們上傳自己的個人圖像,因為他是窗戶清潔技術。 他想讓人們能夠上傳他們的圖像,以便可以給他們估算成本。 下面,我有兩位代碼。 第一位成功上傳圖像。 我不用擔心。 但是,第二位不能成功上傳圖像。 我要實現的是,每當用戶上傳一組圖像(最多5張)時,它將在目錄中創建一個新文件夾,該文件夾將當前時間設置為該文件夾的名稱,這樣一來,他跟蹤誰發送了什么。 關於他如何僅根據圖像識別一個人的信息,我仍在制定一些細節(也許一個人在發送圖像后會打電話並確認提交時間?)。 我正在嘗試使用盡可能少的數據庫來做到這一點,因為我不知道如何使用MySQL並將其綁定到PHP。

這是可以成功將圖片成功上傳到/ upload的代碼:

<?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);

電子郵件地址可以是您想要的任何內容。 唯一的要求是您要在網站所在的位置運行郵件服務器(幾乎所有托管公司除了提供Web服務器外,還提供電子郵件服務器)。 在標題部分,您會注意到前面的文本。 該文本顯示為發送電子郵件的“人”的名字,而<>之間的文本就是它的“地址”,也不必是真實的。

在我的身體上,我留下了為叔叔生成門票的文字,以舉例說明您可能希望或不希望自己的門票看起來像什么。

乍一看,您的上傳錯誤似乎從未創建過要向其中上傳內容的動態文件夾。 嘗試:

mkdir($uploadpath);

在目錄中創建或移動任何文件之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM