文件上传表单不起作用

时间:2015-01-05 21:22:24

标签: php file-upload

我在表单中添加了标记enctype="multipart/form-data"后,我的文件上传脚本将不再有效。

这是完整的表格:

echo '
    <form action="/group/'.$_GET['id'].'/add_content" method="POST" enctype="multipart/form-data" class="form-horizontal">
        <fieldset>
            <legend>Beitrag hinzuf&uuml;gen</legend>
            <div class="form-group">
                <label for="inputPassword" class="col-lg-2 control-label">Inhalt</label>
                <div class="col-lg-10">
                    <div class="well">
                    <textarea class="form-control" required="required" name="content_content" placeholder="Schreibe den Inhalt deines Beitrages hier hin..." rows="15"></textarea>
                    </div>
                </div>
            </div>
            <div class="form-group">
              <label for="inputPassword" class="col-lg-2 control-label">Bilder</label>
              <div class="col-lg-10">
                <div style="margin-top: 6px;"><b>Anhänge sind Freiwillig. F&uuml;r diese Anh&auml;nge gelten besondere Bestimmungen, diese kannst du in den Nutzungsbestimmungen nachlesen!</b><br>
                <b>Es sind folgende Dateiendungen erlaubt: PNG, GIF, JPG, BMP</b><br><br></div>
                <!-- <input type="file" name="content_pictures[0]" accept="image/*" /><br>
                <input type="file" name="content_pictures[1]" accept="image/*" /> -->
                <input readonly="" class="form-control floating-label" placeholder="Durchsuchen..." type="text">
                <input id="inputFile" name="content_pictures[0]" accept="image/*" type="file">
                <input readonly="" class="form-control floating-label" placeholder="Durchsuchen..." type="text">
                <input id="inputFile" name="content_pictures[1]" accept="image/*" type="file">
              </div>
            </div>
            <div class="form-group">
              <label for="inputPassword" class="col-lg-2 control-label">Video</label>
              <div class="col-lg-10">
                <div style="margin-top: 6px;"><b>Anhänge sind Freiwillig. F&uuml;r diese Anh&auml;nge gelten besondere Bestimmungen, diese kannst du in den Nutzungsbestimmungen nachlesen!</b><br>
                <b>Es sind folgende Dateiendungen erlaubt: AVI, MP4, WMV, FLV</b><br><br></div>
                <!-- <input type="file" name="content_video[0]" accept="video/*" /> -->
                <input readonly="" class="form-control floating-label" placeholder="Durchsuchen..." type="text">
                <input id="inputFile" name="content_video[0]" accept="video/*" type="file">
              </div>
            </div>

            <div class="form-group">
                <div class="col-lg-10 col-lg-offset-2">
                    <a class="btn btn-danger" href="/group/'.$_GET['id'].'/members">Abbrechen</a>
                    <input type="submit" name="submitt" value="Beitrag hinzuf&uuml;gen" class="btn btn-success" style="background-color: #00CC66;">
                </div>
            </div>
        </fieldset>
    </form>
    ';

这是相应的PHP脚本:

if(isset($_POST['submitt'])) {
    $content = $_POST['content_content'];
    $group_id = $_GET['id'];
    $user_id = $aaa['id'];
    $user_name = $aaa['username'];

    $query = "INSERT INTO groups_content (group_id, autor_id, autor_name, content, date) VALUES (:group_id, :autor_id, :autor_name, :content, :date)";
    $smt = $db->prepare($query);
    $smt->execute(array(':group_id' => $group_id, ':autor_id' => $user_id, ':autor_name' => $user_name, ':content' => $content, ':date' => time()));

    $query = "SELECT LAST_INSERT_ID(id) AS id FROM groups_content WHERE autor_id = :autor_id ORDER BY id DESC";
    $smt2 = $db->prepare($query);
    $smt2->execute(array(':autor_id' => $user_id));
    $lastid = $smt2->fetch(PDO::FETCH_ASSOC);

    foreach ($_FILES["content_pictures"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["content_pictures"]["tmp_name"][$key];
            $name = $_FILES["content_pictures"]["name"][$key];
            $file_namerev = strrev($name);
            $parts = explode(".",$file_namerev);
            $endung = strrev($parts[0]);
            if($endung == "png" || $endung == "gif" || $endung == "jpg" || $endung == "bmp" || $endung == "PNG" || $endung == "GIF" || $endung == "JPG" || $endung == "BMP") {
                $file = "$randomstring.$endung";
                $query = "INSERT INTO groups_content_media (content_id, media_art, media_file) VALUES (:id, `1`, :file)";
                $smt3 = $db->prepare($query);
                $smt3->execute(array(':id' => $lastid['id'], ':file' => $file));
                move_uploaded_file($tmp_name, "upload_group_content_media_image/$randomstring.$endung");
            } else {
                echo '<div class="alert alert-danger">Die Bilder wurden aufgrund einer unerlaubten Dateiendung nicht hochgeladen! Der Rest wurde gespeichert!</div>';
            }
        }
    }

    foreach ($_FILES["content_video"]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["content_video"]["tmp_name"][$key];
            $name = $_FILES["content_video"]["name"][$key];
            $file_namerev = strrev($name);
            $parts = explode(".",$file_namerev);
            $endung = strrev($parts[0]);
            if($endung == "avi" || $endung == "mp4" || $endung == "wmv" || $endung == "flv" || $endung == "AVI" || $endung == "MP4" || $endung == "WMV" || $endung == "FLV") {
                $file = "$randomstring.$endung";
                $query = "INSERT INTO groups_content_media (content_id, media_art, media_file) VALUES (:id, `2`, :file)";
                $smt4 = $db->prepare($query);
                $smt4->execute(array(':id' => $lastid, ':file' => $file));
                move_uploaded_file($tmp_name, "upload_group_content_media_image/$randomstring.$endung");
            } else {
                echo '<div class="alert alert-danger">Das Video wurde aufgrund einer unerlaubten Dateiendung nicht hochgeladen! Der Rest wurde gespeichert!</div>';
            }
        }
    }

    echo '<div class="alert alert-success">Ihr Beitrag wurde erfolgreich gespeichert. Sie werden in 3 Sekunden weitergeleitet.</div>';
    echo '<meta http-equiv="refresh" content="3; url=/group/'.$_GET['id'].'/home">';
}

0 个答案:

没有答案