为什么我的脚本只将最后一张图片上传到我的ftp和数据库?

时间:2014-11-20 14:14:19

标签: javascript php mysql image upload

我有一个上传脚本,就像一个魅力,但我想扩展它不仅上传一个图像,而是几个图像。这导致我的脚本只上传最后一张图片而不是所有这些图片都包含在textarea中的文字。我无法弄清楚为什么它不会上传所有图片。

我的upload.php:



<?php // Start a session for error reporting session_start(); // Call our connection file require( "includes/conn.php"); // Check to see if the type of file uploaded is a valid image type function is_valid_type($file) { // This is an array that holds
all the valid image MIME types $valid_types=a rray( "image/jpg", "image/jpeg", "image/bmp", "image/gif"); if (in_array($file[ 'type'], $valid_types)) return 1; return 0; } // Just a short function that prints out the contents of an array in a manner that 's easy to read
// I used this function during debugging but it serves no purpose at run time for this example
function showContents($array)
{
    echo "<pre>";
    print_r($array);
    echo "</pre>";
}
 
// Set some constants
 
// This variable is the path to the image folder where all the images are going to be stored
// Note that there is a trailing forward slash
$TARGET_PATH = "content/uploads/";
 
// Get our POSTed variables
$fname = $_POST['fname '];
$lname = $_POST['lname '];
$image = $_FILES['image '];
 
// Sanitize our inputs
$fname = mysql_real_escape_string($fname);
$lname = mysql_real_escape_string(nl2br($lname));
$image['name '] = mysql_real_escape_string($image['name ']);
 
// Build our target path full string.  This is where the file will be moved do
// i.e.  images/picture.jpg
$TARGET_PATH .= $image['name '];

// Make sure all the fields from the form have inputs
if ( $fname == "" || $lname == "" || $image['name '] == "" )
{
    $_SESSION['error '] = "All fields are required";
    header("Location: indexbackup.php");
    exit;
}

// Check to make sure that our file is actually an image
// You check the file type instead of the extension because the extension can easily be faked
if (!is_valid_type($image))
{
    $_SESSION['error '] = "You must upload a jpeg, gif, or bmp";
    header("Location: indexupload.php");
    exit;
}

// Here we check to see if a file with that name already exists
// You could get past filename problems by appending a timestamp to the filename and then continuing
if (file_exists($TARGET_PATH))
{
    $_SESSION['error '] = "A file with that name already exists";
    header("Location: indexupload.php");
    exit;
}
 
// Lets attempt to move the file from its temporary directory to its new home
if (move_uploaded_file($image['tmp_name '], $TARGET_PATH))
{
    // NOTE: This is where a lot of people make mistakes.
    // We are *not* putting the image into the database; we are putting a reference to the file's location on the server $sql="insert into people (fname, lname, filename) values ('$fname', '$lname', '" . $image[ 'name'] . "')"; $result=m ysql_query($sql)
or die ( "Could not insert data into DB: " . mysql_error()); header( "Location: indexupload.php"); exit; } else { // A common cause of file moving failures is because of bad permissions on the directory attempting to be written to // Make sure you chmod
the directory to be writeable $_SESSION[ 'error']="Could not upload file.  Check read/write persmissions on the directory" ; header( "Location: indexupload.php"); exit; } ?>
&#13;
&#13;
&#13;

这是让我选择文件并填写文字区域的页面:

&#13;
&#13;
var abc = 0;      // Declaring and defining global increment variable.
$(document).ready(function () {
    //  To add new input file field dynamically, on click of "Add More Files" button below function will be executed.
    $('#add_more').click(function () {
        $(this).before($("<div/>", {
            id: 'filediv'
        }).fadeIn('slow').append($("<input/>", {
            name: 'image',
            type: 'file',
            id: 'file'
        }), $("<br/><br/>")));
    });
    // Following function will executes on change event of file input to select different file.
    $('body').on('change', '#file', function () {
        if (this.files && this.files[0]) {
            abc += 1; // Incrementing global variable by 1.
            var z = abc - 1;
            var x = $(this).parent().find('#previewimg' + z).remove();
            $(this).before("<div id='abcd" + abc + "' class='abcd'><img id='previewimg" + abc + "' src=''/></div>");
            var reader = new FileReader();
            reader.onload = imageIsLoaded;
            reader.readAsDataURL(this.files[0]);
            $(this).hide();
            $("#abcd" + abc).append($("<img/>", {
                id: 'img',
                src: 'images/x.png',
                alt: 'delete'
            }).click(function () {
                $(this).parent().parent().remove();
            }));
        }
    });
    // To Preview Image
    function imageIsLoaded(e) {
        $('#previewimg' + abc).attr('src', e.target.result);
    }
    ;
    $('#upload').click(function (e) {
        var name = $(":file").val();
        if (!name) {
            alert("First Image Must Be Selected");
            e.preventDefault();
        }
    });
});
&#13;
<div id="maindiv">
    <div id="formdiv">
        <h2>Upload en delete pagina</h2>
        <?php
        if (isset($_SESSION['error'])) {
            echo "<span id=\"error\"><p>" . $_SESSION['error'] . "</p></span>";
            unset($_SESSION['error']);
        }
        ?>   
        <form action="upload2.php" method="post" enctype="multipart/form-data">
            <label>Merk</label>
            <input type="text" name="fname" style="width:250px;"/><br />

            <label>beschrijving</label>
            <textarea name="lname" style="width:250px;height:150px;"></textarea><br />

            <label>Upload afbeelding</label>
            <div id="filediv"><input type="file" name="image" id="file"/></div>
            <input type="hidden" name="MAX_FILE_SIZE" value="5000000" />  
            <br /><br /><p>                    
                <input type="button" id="add_more" class="upload" value="Add More Files"/>
                <br /><br /> 
                <input type="submit" value="Upload" name="submit" id="submit" class="upload" style="left:200px;"/>
            </p>
        </form>
        <br /><br />
        <p>
        <form action="delete_multiple.php" method="post">
            Wil je auto's van de site halen?
            <input type="checkbox" name="formverkocht" value="Yes" />
            <input type="submit" name="formSubmit" value="Submit" />
        </form>
        </p>
    </div>
</div>
&#13;
&#13;
&#13;

先谢谢你们!

1 个答案:

答案 0 :(得分:0)

您的帖子参数的全部中有空格:

$fname = $_POST['fname '];
                      ^--

该空间可用于命名目的,与'fname'不同。 _POST / _GET中的键必须与html中的键完全匹配:

<input type="text" name="foo">   -> $_POST['foo']  // note the LACK of a space
<input type="text" name="bar ">  -> $_POST['bar '] // note the space