moxiecode / plupload
Plupload是一个用于处理文件上传的JavaScript API,支持多文件选择、文件类型过滤、请求分块、客户端图像缩放等功能,它使用不同的运行时环境来实现这些功能,如HTML 5、Silverlight和Flash。
README
Plupload是一个跨浏览器多运行时文件上传API。基本上,它是一组工具,可以帮助您在几分钟内构建一个可靠且视觉效果良好的文件上传器。
从历史上看,Plupload起源于没有HTML5的黑暗和敌对时代,因此所有替代方案,如Flash、Silverlight和Java(仍在开发中)都出现了。它的目的是提供一个在任何情况下都能工作的API。虽然有着非常可靠的替代方案,但Plupload是考虑到HTML5的未来而构建的。
目录
背景
Plupload开始于这样一个时代,当时以响应式和可定制的方式上传文件是一件真正痛苦的事情。内部,浏览器只有input[type="file"]
元素。它既丑陋又笨拙。甚至不能改变它的外观,除非隐藏它并从头开始编写另一个。而且当时上传过程中没有进度指示...在今天听起来似乎很疯狂。
对于开发人员来说,寻找替代方案并编写他们自己的实现,使用Flash和Java来扩展有限的浏览器功能是非常合理的。我们也一样,在寻找为我们的TinyMCE的MCImageManager提供一个可靠和灵活的文件上传器时。
然而,Plupload很快就变得很大。它很容易分裂成一个独立的项目。在主要版本2.0中,它经历了另一场巨大的重构,基本上是从头开始,因为所有低级运行时逻辑都已提取到单独的File API和XHR L2 polyfills(目前统称为mOxie),这使得Plupload有机会进一步发展。
结构
目前,Plupload可以被认为是三个部分组成:低级polyfills、Plupload API和小部件(UI和队列)。最初,小部件仅打算作为API的示例,但很快形成了完全功能的API实现,现在与Plupload API捆绑在一起。这已经成为了关于API的多个误解的来源,因为小部件很容易被误解为Plupload本身。它们只是实现,就像你们中的任何人都可以使用API自己构建一样。
- 低级填充(mOxie) - 它们有自己的 代码库 和 文档 在 GitHub 上。
- Plupload API
- UI小部件
- 队列小部件
构建说明
Plupload 依赖于 File API 和 XHR2 L2 填充,目前它们在 GitHub 上有自己的 仓库。然而,在大多数情况下,你不需要关心,因为我们将 mOxie 的最新构建版本捆绑到每个版本中,包括完整的和精简的 JavaScript 源代码以及预编译的 SWF
和 XAP
组件。你可以在 js/
文件夹下找到你需要的一切。
有时你可能需要一个自定义构建,例如无冗余运行时、原大小的一半等。这个任务的难点在于 mOxie 以及它的一组附加运行时,这些运行时需要在你的工作站上使用特殊工具才能编译。考虑 mOxie 的构建说明 - 所有这些都适用于 Plupload。
首先,如果你想构建自定义 Plupload 软件包,你将需要 Node.js,因为这是我们首选的构建环境。Node.js 二进制文件(以及源代码)适用于所有主要操作系统。
Plupload 包括 mOxie 作为子模块,它还依赖于一些其他仓库来构建其开发环境 - 为了避免逐一下载的需要,我们建议你递归地使用 git 克隆 Plupload(你需要系统上安装 git 才能成功执行此操作)
git clone --recursive https://github.com/moxiecode/plupload.git
最后,使用 npm install
完成准备阶段 - 这将安装所有额外的模块,包括那些由开发和测试环境所需的模块。如果你希望保持最小化,请添加 --production
标志。
注意: 目前,由于未知原因,Windows 上的本地安装的 Node.js 模块可能不会自动添加到系统 PATH 中。因此,如果下面的 jake
命令不被识别,你需要手动添加它们。
set PATH=%PATH%;%CD%\node_modules\.bin\
支持
我们积极支持 Plupload,现在我们已经完成了主要的重写和重构,我们面前的唯一真正目标是使其尽可能可靠和防弹。我们对所有的建议和功能请求持开放态度。如果你遇到任何问题,请提交错误报告。我们可能不会立即作出反应,但我们始终将它们铭记在心,因为我们扩展代码库。
除了为那些敢于购买我们的 OEM 许可证的客户提供的专用支持外,我们还有 讨论论坛,它就像一个巨大的 FAQ,涵盖了所有可能的应用场景。当然,你可以在 GitHub 上提交错误报告或功能请求。
有时,在有实际代码的错误报告中发现问题更容易。请考虑为有问题的代码提供 一个 Plupload fiddle。
贡献
我们对建议和代码修订持开放态度,但首先你可能需要考虑一些规则和限制。
- 你贡献的代码将自动在 AGPL 许可下发布,但不仅限于 AGPL。
- 虽然所有贡献者都将获得他们工作的信誉,但版权声明将被改为 Moxiecode Systems AB。
- 第三方代码在发布前将进行审查、测试和可能修改。
这些基本规则帮助我们谋生,并确保代码保持开源状态,与AGPL许可兼容。所有贡献都将添加到变更日志中,并出现在每个版本和网站上。
一个简单的开始方法是将Plupload翻译成您的语言。
您可以在以下位置了解有关如何贡献的更多信息:http://www.plupload.com/contributing
许可
版权所有 2016, Ephox.
在AGPL-3.0 许可证下发布。
我们还提供商业许可证。