【问题标题】:It always displays an error while uploading a file上传文件时总是显示错误
【发布时间】:2012-04-09 23:17:43
【问题描述】:

我有一个应用程序here,用户在其中添加了一个表格行,它将在该行中显示一个文件输入。现在我遇到的问题是,如果您使用输入选择一个文件并单击“上传”,它总是指出上传文件时出错,任何文件都会发生这种情况。

我已将文件的权限设置为能够读取和写入,但它仍然指出上传文件时出现错误。如果有人使用过 MAx 的 AJAX 文件上传器并且之前遇到过这个问题但后来修复了它,那么我可以问你是如何解决这个问题的。如果没有,那么我是否有其他方法可以解决此问题,以便它停止显示完全合法文件上传的错误消息,而是显示文件上传成功消息。

当我在此链接中测试使用不同服务器的相同代码时:[er5325.aisites.com/scripts/stack/test.html ,然后在上传合法文件时它不会显示错误消息。

我正在使用大学的服务器 helios.hud.ac.uk

以下是文件输入的代码和停止和开始上传的函数:

 <script type="text/javascript">
     var sourceForm; 

    function insertQuestion(form) {   

        var $tbody = $('#qandatbl > tbody'); 
        var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
        var $image = $("<td class='image'></td>"); 


       var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='startUpload(this);' class='imageuploadform' >" + 
        "<p class='imagef1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /><br/></p><p class='imagef1_upload_form' align='center'><br/><label>" + 
        "File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label>" + 
        "(jpg, jpeg, pjpeg, gif, png, tif)</label><br/><br/><label>" + 
        "<input type='submit' name='submitBtn' class='sbtn' value='Upload' /></label>" +
        "</p> <iframe class='upload_target' name='upload_target' src='#' style='wclassth:0;height:0;border:0px;solclass #fff;'></iframe></form>");

        $image.append($fileImage);

        $tr.append($image);  
        $tbody.append($tr); 

    }

   function startUpload(imageuploadform){
  $(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
  $(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden');
  sourceForm = imageuploadform;
      return true;
}

    function stopUpload(success){
          var result = '';
          if (success == 1){
             result = '<span class="msg">The file was uploaded successfully!<\/span><br/><br/>';
          }
          else {
             result = '<span class="emsg">There was an error during file upload!<\/span><br/><br/>';
          }
          $(sourceForm).find('.imagef1_upload_process').css('visibility','hidden');
          $(sourceForm).find('.imagef1_upload_form').html(result + '<label>File: <input name="fileImage" type="file"/><\/label><br/><label>(jpg, jpeg, pjpeg, gif, png, tif)</label><br/><br/><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>');
          $(sourceForm).find('.imagef1_upload_form').css('visibility','visible');     
          return true;   
    }
    </script>

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

<?php
   // Edit upload location here
   $destination_path = getcwd().DIRECTORY_SEPARATOR;

   $result = 0;

   $target_path = $destination_path . basename( $_FILES['fileImage']['name']);

   if(@move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) {
      $result = 1;
   }

   sleep(1);
?>

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

【问题讨论】:

  • 删除它,因为这是您第二次创建的。
  • 也许你在 $destination_path 中没有写权限。另外,如果有人上传 evil.php 文件怎么办?听起来他可以覆盖您的脚本或上传任何邪恶的文件。也许您应该将文件移动到 www 树之外的路径。
  • 我会这样做,但我会一步一步来,第一件事是尝试让上传文件正常工作。那么你是说为 imageupload.php 设置写权限吗? (这是 $destination_path 的存储位置。

标签: php javascript jquery file-upload


【解决方案1】:

我无法遵循您的代码,但函数 startUpload(source_form) 可能没有按照您的意愿执行。您对局部变量使用与全局变量相同的名称,然后编写类似 sourceForm = source_form;那不会有任何影响。也许您可以找到一种方法来避免使用全局变量,或者将局部变量重命名为不同的名称。

function startUpload(imageuploadform){
  $(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
  $(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden');
  sourceForm = imageuploadform;
      return true;
}

我不知道这是否与错误有关,但会让你的代码不那么奇怪。

您是否测试过您的脚本可以在您尝试的地方写入文件?你有没有访问服务器的日志来检查相关的错误?

【讨论】:

  • 我更改了代码,并没有修复错误,但你是对的让它看起来不那么奇怪,我更新了上面的代码以包含变量的更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 2014-04-23
  • 1970-01-01
  • 2012-06-06
  • 2013-01-07
相关资源
最近更新 更多