php - 文件上传成功后成功消息变为取消消息

标签 php jquery html

当文件成功上传时,我无法显示正确的消息。

发生的情况是,当文件上传成功时,它会在一瞬间显示成功消息,然后突然变为取消消息。我的问题是,如果文件上传成功,我希望显示成功消息,显然我不希望它更改为取消消息。

下面是一个表单,其中包含文件输入以及上传和取消按钮;

<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target_image' onsubmit='return imageClickHandler(this);' class='imageuploadform' > 
 Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>
 <input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>
 <input type='reset' name='imageCancel' class='imageCancel' value='Cancel' /></label>
 <iframe class='upload_target_image' name='upload_target_image' src='#' style='width:0px;height:0px;border:0px;solid;#fff;'></iframe></form>    

下面是开始文件上传的函数:

function startImageUpload(imageuploadform){

  $(imageuploadform).find('.imagef1_cancel').css('visibility','visible');
  sourceImageForm = imageuploadform;

        $(imageuploadform).find(".imageCancel").on("click", function(event) {
    $('.upload_target_image').get(0).contentwindow
    $("iframe[name='upload_target_image']").attr("src", "javascript:'<html></html>'");
     $request = $.ajax("cancelimage.php").done(function(data) {

        return stopImageUpload(2);

    });  

}); 

      return true;
}

下面是停止文件上传的函数:

var imagecounter = 0;

function stopImageUpload(success, imagefilename){

      var result = '';
      imagecounter++;

      if (success == 1){
         result = '<span class="imagemsg'+imagecounter+'">The file was uploaded successfully</span>';      
      }
      else if (success == 2){
          result = '<span class="imagemsg'+imagecounter+'"> The file upload was cancelled</span>';
      }
      else {
         result = '<span class="imagemsg'+imagecounter+'">There was an error during file upload</span>';
      }


      $(sourceImageForm).find('.imagef1_cancel').css('visibility','hidden');
      $(sourceImageForm).find('.imagemsg').html(result);
      $(sourceImageForm).find(".fileImage").replaceWith("<input type='file' class='fileImage' name='fileImage' />");


      return true;   
}

下面是 clickHandler 函数:

     function imageClickHandler(imageuploadform){ 
          if(imageValidation(imageuploadform)){ 
              window.lastUploadImageIndex = $('.imageuploadform').index(imageuploadform); 
              return startImageUpload(imageuploadform); 
              $request.abort()
          } 
          return false;
      }

下面是上传文件的 imageupload.php 页面:

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);


session_start();


if ($_FILES['fileImage']['error'] === UPLOAD_ERR_OK) {
    $result = 0;


    if (getimagesize($_FILES['fileImage']['tmp_name'])) {
        if ((($_FILES["fileImage"]["type"] == "image/gif") || ($_FILES["fileImage"]["type"] == "image/jpeg") || ($_FILES["fileImage"]["type"] == "image/pjpeg") || ($_FILES["fileImage"]["type"] == "image/jpg")) && ($_FILES['fileImage']['size'] > 0)) {
            if (is_file("ImageFiles/" . $_FILES['fileImage']['name'])) {
                $parts = explode(".", $_FILES['fileImage']['name']);
                $ext   = array_pop($parts);
                $base  = implode(".", $parts);
                $n     = 2;

                while (is_file("ImageFiles/" . $base . "_" . $n . "." . $ext))
                    $n++;
                $_FILES['fileImage']['name'] = $base . "_" . $n . "." . $ext;

                move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);
                $result = 1;


            }

            else {
                move_uploaded_file($_FILES["fileImage"]["tmp_name"], "ImageFiles/" . $_FILES["fileImage"]["name"]);
                $result = 1;
            }

        }

    }
} else {
    echo "Upload was not successful";
}

?> 

最佳答案

您的代码调用:

stopImageUpload(2);

ajax调用完成后。传递 2 会导致您的代码提示上传已取消。因此,现在代码正在执行您要求它执行的操作(即始终表示上传已取消)。

您需要区分成功和 ajax 函数可能完成的其他方式,以便在完成时显示正确的状态。

关于php - 文件上传成功后成功消息变为取消消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087309/

相关文章:

javascript - AJAX 调用失败,ReferenceError 分配给未声明的变量 PostRPC

javascript - Jquery 加载带有 chitika 广告的页面,破坏网站

php - 根据对二维数组进行排序

php - 将用户添加到数据库时使用 PHP 类

javascript - 将\n 换行符转换为 HTML <BR> 换行符

html - 更改 CSS 位置的引用点

javascript - 使用模态,HTML 无法在 Angular 4 中获取 JS 文件

php - 如何编写 mysql 查询以获得以下结果

php - zend framework 2 viewModel 它不工作

javascript - 无法禁用多选下拉菜单