它没有附加正确的文件名?

时间:2012-04-26 22:29:26

标签: php javascript json

我在附加imageNameArray时遇到问题,它假设显示已上传的文件名。

问题是,我说我以前上传了3个文件(cat.png,dog.png和pig.png),当我刷新页面并上传另一个文件(panda.png)时,当我上传文件时,它应该显示'panda.png'。但它只是附加以前上传的文件的名称(cat.png,dog.png和pig.png),它不附加panda.png。

如果我再次刷新页面并上传另一个文件(tiger.png),那么当我上传文件时,它应该显示'tiger.png'。但它只是附加以前上传的文件(cat.png,dog.png和pig.png和panda.png)的名称,并且它不附加tiger.png。

如果我上传了另一个文件(不是刷新页面),例如monkey.png,那么它会再次附加cat.png,dog.png和pig.png以及panda.png。没有monkey.png。

为什么这样搞乱了?我想要的是,当一个文件上传时,它的名字被追加,但它不想这样做:(

以下是发生追加的javascript代码:

function stopImageUpload(success){
    var imageNameArray = <?php echo json_encode(isset($_SESSION ['fileImage']) ? $_SESSION ['fileImage'] : null); ?>;
    var result = '';
    if (success == 1) {
        result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';

        console.log(imageNameArray);
        for(var i=0;i<imageNameArray.length;i++) {
            $('.listImage').append(imageNameArray[i]+ '<br/>');
        }
        console.log((imageNameArray instanceof Array ? 'for' : 'for-in'));    
    } else {
        result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
    }
    return true;   
}

下面是上传文件的PHP脚本,$ _SESSION变量检索文件名:

<?php

    session_start();

    $result = 0;
    $errors = array ();
    $dirImage = "ImageFiles/";

    if (isset ( $_FILES ['fileImage'] ) && $_FILES ["fileImage"] ["error"] == UPLOAD_ERR_OK) {
        $fileName = $_FILES ['fileImage'] ['name'];

        $fileExt = pathinfo ( $fileName, PATHINFO_EXTENSION );
        $fileExt = strtolower ( $fileExt );

        $fileDst = $dirImage . DIRECTORY_SEPARATOR . $fileName;

        if (count ( $errors ) == 0) {
            if (move_uploaded_file ( $fileTemp, $fileDst )) {
                $result = 1;
            }
        }
    }

    $_SESSION ['fileImage'][] = $_FILES ['fileImage']['name'];

?>

<script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result;?>);</script>

1 个答案:

答案 0 :(得分:1)

您在第一行stopImageUpload函数中将会话值分配给imageNameArray变量。因此imageNameArray变量包含以前上载的图像名称。尝试更改线路 var imageNameArray = <?php echo json_encode(isset($_SESSION ['fileImage']) ? $_SESSION ['fileImage'] : null); ?>;

作为

var imageNameArray = new Array();