PHP文件上传进度跟踪 PHP5.2已经新增此功能_PHP教程
PHP V5.2 为开发人员添加了 hook 以利用实时跟踪文件上传进度的功能。本文是 “PHP V5.2 中的新增功能” 系列文章(共五部分)的第 5 部分,将向您展示如何监视文件上传并相应地编写代码,以及如何创建 PHP 进度条。
Web 2.0 是 Internet 上最炙手可热的时髦字眼,投资者纷纷把资金投入到涉及这项技术的投资项目中。数以百万计的 Web 站点和应用程序覆盖的描述性术语有很多。使用 Web 2.0,我们将描述一类 Web 站点,这些站点都提供了了解 Internet 上数以百万计用户心声的途径。与众不同之处在于它们全都为用户提供了交流和分享与共同利益相关的观点和数据的场所,这些站点可以快速生成大量内容。
每个用户都将提供某种内容 —— 评论咖啡店、上班路线等。YouTube 在这点上是一个优秀示例,为人们提供一个空间可以上传视频并使其他用户可以观看这些视频并提供反馈。YouTube 是 Web 2.0 奉行者的新宠,值得关注的是到目前为止 YouTube 的流行度上升得比 Internet 中的任何一个站点都要快。这种流行度可以归因于大量各式各样的内容,以及能够让用户以留言的形式发表自己对内容的看法。并且不仅可以留言,用户甚至还可以 上传与视频相对应的视频留言。
文本领域
许多接收文件的 Web 站点都会在文本框旁边安置令人厌恶的 Browse 按钮,强制要求用户一次上传一个文件。这可能要花费很长时间,尤其是在以小型文件组的形式提供视频、甚至照片或其他项目的情况下。由于每个文件都必须单独 上传,因此可能会十分繁琐。假定上传超大型文件所花的时间会使耐心不足的用户感到难以容忍,那么给这些用户提供积极反馈避免他们放弃并走开将十分重要。
幸运的是,PHP V5.2 引入到文件上传过程中的新 hook 使我们可以向用户实时显示上传的进展情况。在本文中,将使用 PHP V5.2 为用户创建一个进度条(要获得源代码, 请点击下载)。
完整说明
如果安装并配置了正确的库,则 PHP V5.2 中的新 “hook” 实际上是在文件传输过程中可获得的数据点。这些新 hook 将使用一种称为 Alternative PHP Cache 的功能。当 PHP 脚本收到一个上传文件时,解释程序将自动检查 $_POST array 以查找名为 APC_UPLOAD_PROGRESS 的隐藏字段,它将成为缓存变量,存储关于上传的信息以便脚本可以访问上传文件。当此信息已被缓存并且随时可以访问后,可以给用户提供可视化反馈,从而提高用户体验。
我们将介绍 HTML 表单中的 APC 代码的实现,以及如何在 PHP 中识别该实现及如何访问缓存的信息。表示此数据有很多方法:从 Ajax 到 FLEX,但是我们要关注的是准备这些前端技术所需的访问数据的方法。
设置
默 认情况下,PHP V5.2 中的 APC 不启用。由于新 hook 是 APC 的一部分,因此需要确保安装扩展并使其可用于 PHP 解释程序。这将通过下载 php_apc 扩展文件来完成。在我们的例子中,将使用 WAMP 安装,这是包括 Apache 和 MySQL 的免费获得打包的 PHP for Windows®。它提供了友好的用户界面并且由于拥有支持配置选项的菜单而十分易于管理。
要在 WAMP 上设置 APC,请执行以下步骤:
要下载库和 WAMP,请参阅 参考资料。
安装 WAMP。
把 php_apc.dll 文件放到 PHP 的扩展文件夹中。默认情况下,此文件夹为
使用系统盘 WAMP 菜单来选择 PHP settings>PHP Extensions>Add Extension。
在弹出的命令行界面中,键入 php_apc.dll 并按 Enter。
使用文本编辑器,打开
重新启动 PHP。
APC 现在应当已设置并被初始化。APC 的 RFC1867 特性 —— 使您可以跟踪文件上传的特性 —— 现在应当已被启用为选项,并且应当准备好探究文件上传以启用实时状态。
可接收文件的帐户
要接收文件,必须先设置接收文件的表单。很方便的是,HTML 附带了文件的标准字段类型。同所有 HTML 表单字段一样,它在逻辑上被命名为类型 file。默认情况下,附带了显示在块右侧的便捷 Browse 按钮。
清单 1. upload.php 的 HTML 表单
<ol class="dp-xml"> <li class="alt"><span><span>以下为引用的内容: </span></span></li> <li> <span class="tag"></span><span class="tag-name">php</span><span> </span> </li> <li class="alt"> <span> $</span><span class="attribute">id</span><span> = $_GET[id]; </span> </li> <li> <span class="tag">?></span><span> </span> </li> <li class="alt"><span> </span></li> <li><span class="tag"><span class="tag-name">form</span><span> </span><span class="attribute">enctype</span><span>=</span><span class="attribute-value">"multipart/form-data"</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"upload_form"</span><span> </span></span></li> <li class="alt"> <span> </span><span class="attribute">action</span><span>=</span><span class="attribute-value">"target.php"</span><span> </span><span class="attribute">method</span><span>=</span><span class="attribute-value">"POST"</span><span class="tag">></span><span> </span> </li> <li><span> </span></li> <li class="alt"><span class="tag"><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"hidden"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"APC_UPLOAD_PROGRESS"</span><span> </span></span></li> <li> <span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"progress_key"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"<?php echo $id?>"</span><span class="tag">/></span><span> </span> </li> <li class="alt"><span> </span></li> <li><span class="tag"><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"file"</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"test_file"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"test_file"</span><span class="tag">/></span><span class="tag"><span class="tag-name">br</span><span class="tag">/></span><span> </span></span></span></li> <li class="alt"><span> </span></li> <li><span class="tag"><span class="tag-name">input</span><span> </span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">"window.parent.startProgress(); return true;"</span><span> </span></span></li> <li class="alt"><span>phperz.com </span></li> <li><span> </span></li> <li class="alt"><span> </span></li> <li> <span class="attribute">type</span><span>=</span><span class="attribute-value">"submit"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"Upload!"</span><span class="tag">/></span><span> </span> </li> <li class="alt"><span> </span></li> <li> <span class="tag"></span><span class="tag-name">form</span><span class="tag">></span><span> </span> </li> </ol>
需要为此表单创建一个 PHP 页面,因为需要使用惟一密钥来跟踪上传。最后,它将是用于调用此页面作为 GET 值的 URL 的一部分。此数字将是稍后将检索的 APC 缓存条目密钥的值。要传递该值,表单字段需要有一个拥有特殊名称的隐藏字段,使 APC 知道它需要保存文件上传状态。此字段被称为 APC_UPLOAD_PROGRESS。这是前述的启动缓存过程的 hook。为确保 PHP 可以访问缓存中的正确条目,我们使用检索到的惟一 ID 作为隐藏字段的值,从而创建该值的密钥。用户提交表单后 —— 我们将简短地处理提交按钮 —— 浏览器将把文件和密钥作为发送给服务器的 POST 数据的一部分进行发送。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7
