当前位置: 首页 > 面试题库 >

PHP上传,提取和进度栏

廉子民
2023-03-14
问题内容

我需要为我的php上传网站创建进度栏的帮助。我已经整理了上传和摘录部分,但我需要进度条的帮助。我不确定该怎么做。另外,上传文件的最大大小是多少?

的HTML

<?php if($message) echo "<p>$message</p>"; ?>
<form enctype="multipart/form-data" method="post" action="">
<label>Choose file (.zip): <input type="file" name="zip_file" /></label>
<br />
<input type="submit" value="Upload" name="submit" value="Upload" />
</form>

的PHP

<?php
if($_FILES["zip_file"]["name"]) {
  $filename = $_FILES["zip_file"]["name"];
  $source = $_FILES["zip_file"]["tmp_name"];
  $type = $_FILES["zip_file"]["type"];

  $name = explode(".", $filename);
  $accepted_types = array(
    'application/zip', 
    'application/x-zip-compressed', 
    'multipart/x-zip', 
    'application/x-compressed');

  foreach($accepted_types as $mime_type) {
    if($mime_type == $type) {
      $okay = true;
      break;
    } 
  }

  $continue = strtolower($name[1]) == 'zip' ? true : false;
  if(!$continue) {
    $message = "[...] not a .zip file. Please try again.";
  }
  $target_path = "./".$filename;
  if(move_uploaded_file($source, $target_path)) {
    $zip = new ZipArchive();
    $x = $zip->open($target_path);
    if ($x === true) {
      $zip->extractTo("./");
      $zip->close();

      unlink($target_path);
    }
    $message = "Your .zip file was uploaded and unpacked.";
  } else {  
    $message = "There was a problem with the upload. Please try again.";
  }
}
?>

问题答案:

您可以进行一些更改以适合需要,但是如果您需要进度条,则效果会很好。您可以添加更多事件监听器,并根据需要进行设置。希望这对您来说是一个很好的起点。

function uploadFile(){
    var file = document.getElementById("zip_file").files[0];
    var formdata = new FormData();
    formdata.append("zip_file", file);
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", function(event) { runprogress(event); } , false);
    ajax.addEventListener("load", function(event) {uploadcomplete(event); }, false);
    //Target your php file. 
    ajax.open("POST", "upload.php");
    ajax.send(formdata);
}
function runprogress(event){
    //The progress %, you might want to Math.round(percent) 
    var percent = (event.loaded / event.total) * 100;
}
function uploadcomplete(event){
    //This will = to your php reply.
    var AjaxReply=event.target.responseText;
}


 类似资料:
  • 问题内容: 有谁知道如何获取进度条以php上传?我正在尝试为相册上传者编写代码。我希望在上传照片时显示进度条。 我对php很陌生,所以我不了解它的一切。 问题答案: 这是到目前为止(在经过数小时的搜索和尝试脚本之后)最简单的设置,也是我发现的最好的上载器 它不需要APC或任何其他外部PHP库,我可以在共享主机上获得文件进度反馈,它声称支持html5拖放(未经个人测试)和多个文件上传。

  • 问题内容: 我非常了解Javascript,AJAX和JQuery等,并且我相信可以使用PHP,AJAX和Javascript等创建上传进度栏。 我很惊讶如何获得上传的大小(意思是我想知道的每一秒,上传了多少文件,还有多少剩余,我认为应该可以使用AJAX等)文件正在上传中。 这是PHP手册的链接,但我不明白: http //php.net/manual/en/session.upload- pro

  • 问题内容: 我敢肯定这已经被问过了,但是由于我似乎找不到一个好的答案,我在这里再次问…。:) 是否可以仅使用HTML,JavaScript / AJAX和PHP的组合来报告文件上载的实际进度? 回复任何提出SWFUpload或类似建议的人: 我都知道 走那条路。我正在寻找100%纯净的解决方案(是的,我知道我可能不会得到它)。 问题答案: 如果您能够将PECL软件包添加到PHP中,则有upload

  • 问题内容: 看来我还没有清楚地传达出我的问题。我需要发送一个文件(使用AJAX),并且需要使用Nginx HttpUploadProgressModule 获取文件的上传进度。我需要一个很好的解决方案。我已经尝试过使用jquery.uploadprogress插件,但是我发现自己不得不重写其中的大部分内容,以使其在所有浏览器中都能正常工作并使用AJAX发送文件。 我所需要的只是执行此操作的代码,它

  • 问题内容: 我有一个表单,可以使用AJAX将图像上传到PHP脚本 这是我的表格 结果div是显示PHP输出的位置(请参见AJAX) 进度栏是我希望看到引导进度栏的地方。 这是我的AJAX 现在,我得到一个输出,向我显示PHP中回显的数据。但是由于某种原因,我无法使进度条正常工作。 可能是什么问题? 问题答案: 去除 解决了。但我现在需要看看如何重置标准。

  • 本文向大家介绍php实现简单的上传进度条,包括了php实现简单的上传进度条的使用技巧和注意事项,需要的朋友参考一下 Web上传文件的三种解决方案分享给大家: 这里我要使用的是form法。通过为表单元素设置enctype=”multipart/form-data”属性,让表单提交的数据以二进制编码的方式提交,在接收此请求的Servlet中用二进制流来获取内容,就可以取得上传文件的内容,从而实现文件的