0

写真をアップロードしてデータベースに保存しようとしています。問題は、私は HTML があまり得意ではなく、タグをコピーして貼り付けて好きなフォームを取得し、必要な場所を編集しているだけです。それ自体は正常に動作するため、使用しているhtmlタグと関係があると確信していますが、そのコードをコピー/貼り付けすると、登録フォームのifステートメントにあるはずです。タイプとサイズの規制をチェックすると、常に false が返されます。フォーム/投稿/送信ボタンの組み合わせが貼り付けられている、作業中の登録フォームページに関係している必要があります。

これは私の作業用アップロード テスト コードです

<html>
<body>
<form   method  = "post" enctype = "multipart/form-data">
<label  for = "file">Filename:</label>
<input  type    = "file"   name = "file"   id = "file" />
<input  type    = "submit" name = "Submit" value ="Submit">
</form>

<?php
if (!empty($_FILES['file']))
{
    if ((( $_FILES["file"]["type"] == "image/gif")  
        || ($_FILES["file"]["type"] == "image/jpeg")
        || ($_FILES["file"]["type"] == "image/pjpeg"))
        && ($_FILES["file"]["size"] < 5000000))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            header("Location: http://www.drink-social.com/error.php?upload=".$_FILES["file"]["error"]);
            exit();
        }

        else if (file_exists("/var/www/pics/".$_FILES["file"]["name"]))
        {
            header("Location: http://www.drink-social.com/error.php?upload=exists");
            exit();
        }

        move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/pics/".$_FILES["file"]["name"]);
    }
}
?>
</body>
</html>

セクションをまとめてコピー/貼り付けした後の登録ページは次のようになります。

<html>
<body>
Please enter your details below:
<br />
<form   name = "Details" method = "post">
<br />
Username:   <input type = "text" name = "Username">
<br />
Password:   <input type = "text" name = "Password">
<br />  
Name:       <input type = "text" name = "Name">
<br />
Address:    <input type = "text" name = "Line1">
<br />
Line 2:     <input type = "text" name = "Line2">
<br />
City:       <input type = "text" name = "City">
<br />
State:      <input type = "text" name = "State">
<br />
Zip:        <input type = "text" name = "Zip">
<br />
Now let's get those daily deals...
<br />
Monday:     <input type = "text" name = "Monday">
<br />
Tuesday:    <input type = "text" name = "Tuesday">
<br />
Wednesday:  <input type = "text" name = "Wednesday">
<br />
Thursday:   <input type = "text" name = "Thursday">
<br />
Friday:     <input type = "text" name = "Friday">
<br />
Saturday:   <input type = "text" name = "Saturday">
<br />
Sunday:     <input type = "text" name = "Sunday">
<br />

<form   method  = "post" enctype = "multipart/form-data">
<label  for = "file">Filename:</label>
<input  type    = "file"   name = "file"   id = "file" />
<input  type    = "submit" name = "Submit" value ="Submit">
</form>

<?php
include_once("host_class.php");
include_once("event_class.php");

if (!empty($_POST['Username']))
{           
    $host  = new Host();        
    $event = new Event();

    if ($host->i_exist($_POST['Username']))
    {
        header("Location: http://www.drink-social.com/error.php?login=duplicate");
        exit();
    }

    else if ((( $_FILES["file"]["type"] == "image/gif")     
        || ($_FILES["file"]["type"] == "image/jpeg")
        || ($_FILES["file"]["type"] == "image/pjpeg"))
        && ($_FILES["file"]["size"] < 5000000))
    {
        if ($_FILES["file"]["error"] > 0)
            {
                header("Location: http://www.drink-social.com/error.php?upload=".$_FILES["file"]["error"]);
            exit();
            }

        else if (file_exists("/var/www/pics/".$_FILES["file"]["name"]))
        {
            header("Location: http://www.drink-social.com/error.php?upload=exists");
            exit();
        }

        move_uploaded_file($_FILES["file"]["tmp_name"], "/var/www/pics/".$_FILES["file"]["name"]);
        $host->set_username($_POST['Username']);
        $host->set_password($_POST['Password']);
        $host->set_name($_POST['Name']);        
        $host->set_address($_POST['Line1'], $_POST['Line2'], $_POST['City'],
                   $_POST['State'], $_POST['Zip']);
        $host->set_pic($_FILES['file']['name']);

        $id = new MongoID($host->add_me());
        $host->build_me($id);

        $host->set_mondayID($event->add_me($_POST['Monday'], $host->get_id()));
        $host->set_tuesdayID($event->add_me($_POST['Tuesday'], $host->get_id()));
        $host->set_wednesdayID($event->add_me($_POST['Wednesday'], $host->get_id()));
        $host->set_thursdayID($event->add_me($_POST['Thursday'], $host->get_id()));
        $host->set_fridayID($event->add_me($_POST['Friday'], $host->get_id()));
        $host->set_saturdayID($event->add_me($_POST['Saturday'], $host->get_id()));
        $host->set_sundayID($event->add_me($_POST['Sunday'], $host->get_id())); 

        $host->update_me();
        header("Location: http://www.drink-social.com/member.php?ID=".$id);
        exit();
    }

    else 
    {
        header("Location: http://www.drink-social.com/error?upload=empty");
        exit();
    }

}
?>
</body> 
</html>

投稿が空かどうかのチェックを通過しますが、ファイルがあるかどうかを確認すると、false が返され、エラー ページが表示され、ファイルが選択されていないと表示されます...? 私は無知です。アドバイスをお願いします 事前に感謝します。

4

1 に答える 1

1

ファイルをアップロードするには、このコードを使用しています

フォームに入力フィールドがあるとします

<input type="file" value=""  name="file" />

送信をクリックすると、次のようにファイルを受け取ります

if($_FILES['file']['name']){ 
    if($_FILES['file']['error']==0){
        $target = "/images/";
        $target_path = $target.time().getExtension($_FILES['file']['name']); 
        move_uploaded_file($_FILES['file']['tmp_name'], $target_path);
    }
}

ここで、現在のタイムスタンプを名前としてファイルを保存し、拡張子を使用して取得しています

function getExtension($str) {
    $i = strrpos($str,".");
    if (!$i) { return ""; }
    $l = strlen($str) - $i;
    $ext = substr($str,$i+1,$l);
    return $ext;
}

MongoDBについてはわかりませんが、コードからは次のようになります

$host->set_pic($target_path); 

その画像のパスを保存します。ファイルタイプとサイズをチェックするための残りの条件は、このコードのそれぞれの場所に配置できます。ありがとう

于 2012-05-03T10:56:46.150 に答える