如何在php中的fileupload期间创建上传进度条

时间:2016-04-25 13:13:30

标签: php jquery file-upload

我正在尝试在上传文件时创建上传进度条。

这是我的一部分:

if($_SERVER['REQUEST_METHOD'] == 'POST')
{   
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$root = '/users/'.$UserName.'/';
if (!is_dir($root))
{
    @mkdir('users/'.$UserName, 0777);

if (($_FILES["file"]["size"] < $MaxUploadSize) && in_array($extension, $allowedExts))

{
     echo 'upload successful';

      $data = explode(".",$_FILES["file"]["name"]);
      $newfilename = $realname;
      move_uploaded_file($_FILES["file"]["tmp_name"], 'users/'.$UserName.'/' . $newfilename);

}

else
{

  echo '<span class="failed">Upload failed!</span>';

}

}

} // endif SERVER REQUEST

对于进度条,我使用此javascript:

var bar = $('.bar');
var percent = $('.percent');
var status = $('#status');

$('#sfmform').ajaxForm({
beforeSend: function() {
    status.empty();
    var percentVal = '0%';
    bar.width(percentVal)
    percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
    var percentVal = percentComplete + '%';
    bar.width(percentVal)
    percent.html(percentVal);
},
success: function() {
    var percentVal = '100%';
    bar.width(percentVal)
    percent.html(percentVal);

},
});

结合:http://malsup.github.com/jquery.form.js

我的表单如下:

 <form id="sfmform" action="" method="post" enctype="multipart/form-data">

<input type="file" name="file" id="file" multiple"" />

 <br />
<input type="submit" class="Button Primary" name="submit" value="Upload">
<br /><br />

</form>

进度条工作正常,但是没有显示php echo,无论它们是成功还是失败。没有js,回声工作正常!

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我认为你必须在成功回电中收到回复:

success: function(data) {
    alert(data);
    var percentVal = '100%';
    bar.width(percentVal)
    percent.html(percentVal);

}

答案 1 :(得分:0)

使用变量检查上传是否成功,然后在html

的正文中检查该值

<强> PHP

$check=0;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
  //php code
  if (($_FILES["file"]["size"] < $MaxUploadSize) && in_array($extension, $allowedExts))
{

  $check=1;
}
}

<强> HTML

<html>
<body>
<!-- place your form -->
<?php if ($check==1)
      {
        echo "Upload Successful";
      }
 ?>
 </body>
 </html>