跳转到主要内容

Plone的纯JavaScript文件上传工具,支持拖放、多选和进度条。

项目描述

https://travis-ci.org/collective/collective.quickupload.png?branch=master

Plone快速上传

描述

本产品提供Plone的多文件上传工具,具有多选、拖放和进度条功能。客户端使用纯JavaScript工具,支持html5文件字段和ajax上传,并对其他浏览器提供优雅的降级方案。您还可以选择使用基于flashupload的脚本jquery.uploadify替换JavaScript,这在某些罕见情况下可能很有用(仅针对MSIE客户端浏览器的Plone网站,且前端无http认证,且无https)。

要在您的buildout中安装它,只需将“collective.quickupload”添加到您的egg列表中,然后

$ bin/buildout

要在Plone中安装它,请使用“插件”控制面板,选择“Plone快速上传”产品并安装它。

要查看其实际效果,只需在您的网站上某个位置分配快速上传部件并测试它。

详情

此软件包包含

collective.quickupload.browser

  • 一个简单的ajax视图,可以被任何plone模板调用。

  • 此视图使用基于fileuploader.js的javascript多文件上传工具(fileuploader.js是一个基于valums.com/ajax-upload/的分支,进行了许多改进)或jquery.uploadify.js(基于flashupload,也可参考collective.uploadify plone产品,其中一些代码片段已被采用)

  • 默认情况下使用纯JavaScript方法:fileuploader.js是一个纯AJAX文件上传器,它使用HTML5的多文件字段和AJAX上传POST方法。它不是一个jQuery插件。对于Firefox 3.6+、Chrome或Safari 4+等现代浏览器,它提供拖放、多选和上传进度条。对于其他浏览器(IE7、IE8等),脚本提供优雅的隐藏iframe上传回退。

    • Flashupload(jquery.uploadify)在MSIE下更友好,但有一些“大”问题

      • 不能用于任何类型的HTTP认证之后(基本认证、WindowsNT认证等)

      • 不能通过https使用

      • 不是开源的

    • 网站管理员可以在这两个解决方案之间选择(见下面的控制面板)。

    • 只有具有CMF.AddPortalContent上下文权限的用户才能查看上传表单

    • 只有实现了IQuickUploadCapable接口的对象才能查看上传表单,默认情况下ATFolder、ATBTreeFolder和Plone Site实现了IQuickUploadCapable

    • 快速上传表单允许为每个上传的文件填写标题和描述(见下面的控制面板)

    • 快速上传视图记录日志并将错误返回到表单(未经授权、ID始终存在、类型不允许等…)

    • 视图可以使用会话或请求中设置的某些属性

      • 强制媒体类型(可以是None、image、video、audio或类似“.pdf;.doc;”的某些内容)

        如果请求中设置了媒体类型

        • 使用fileuploader.js时,如果选定的文件内容类型不正确,表单中会引发错误。

          • 使用Flashupload时,选择窗口中只显示选定的内容类型,并显示特定的消息“选择图片”、“选择视频文件”(…)。

        • 强制门户类型

          如果请求中没有设置门户类型,将使用content_type_registry查找合适的门户类型,否则将使用“文件”门户类型。

    • 一个基本的Plone控制面板和一些选项

      • 使用flashupload(是/否),默认值为否

      • 在表单中填写文件的标题(是/否),默认值为是

      • 在表单中填写文件的描述(是/否),默认值为否

      • 选择后自动上传(是/否),默认值=否

      • 每个文件的最大大小限制(以KB为单位)(默认= 0 =无限制)

      • 并发上传限制(默认=2,0 =无限制)

collective.quickupload.portlet

  • 一个调用快速上传AJAX视图的小部件(它也是如何使用quick_upload视图的示例)

  • 小部件尚未分配(可以在TTW中完成或在其他包中完成)

collective.quickupload.profiles

  • 控制面板GS配置文件

  • JavaScript和CSS注册GS配置文件

  • 小部件GS配置文件

quickupload.tests

  • 控制面板、小部件和quick_upload视图的doctests

合规性

  • Plone 4.3

  • Plone 4.2

  • Plone 4.1

Plone 4.0支持在1.6.0停止,Plone 3.3.x支持在1.0.3停止。

关于fileuploader.js分叉

已经做了以下改进

  • 队列上传

  • 图形进度条

  • 并发上传限制

  • 可以在多次选择和表单上的不同操作后,再次发送所有文件

  • 可以使用与每个文件关联的新方法(onAfterSelect)添加新字段

  • debugMode和debugConsole

  • CSS改进

如何

  • 如何在我的模板或小部件中添加快速上传视图?

    只需查看快速上传小部件代码,它真的很简单。

    您还可以查看需要collective.quickupload的collective.plonefinder产品http://plone.org/products/collective.plonefinder

  • 如何通过代码设置允许上传的类型?

    仅包含minimal.zcml,将其添加到您的产品configure.zcml中

    <exclude package="collective.quickupload" file="configure.zcml" />
    <include package="collective.quickupload" file="minimal.zcml" />

    并在您想要实现的类型上实现IUploadCapable

    <class class=".content.EPRIVR_Documents.EPRIVR_Domain">
      <implements interface="collective.quickupload.browser.interfaces.IQuickUploadCapable" />
    </class>
  • 如何排除某些类型的上传?

    如果一个类型实现了IQuickUploadNotCapable,则端口令牌永远不会显示。请在您的zcml中添加。

    <class class=".content.MyContent">
      <implements interface="collective.quickupload.browser.interfaces.IQuickUploadNotCapable" />
    </class>

待办事项

  • JavaScript客户端测试

  • 上传方法单元测试

  • 使用jQuery重构fileuploader.js

  • 为上传视图添加测试

  • PEP8/代码清理

  • 安装后显示上传按钮的默认值

  • WTF令人困惑的文档?

支持

请将所有票据提交到GitHub上的问题页面 https://github.com/collective/collective.quickupload/issues

仓库

https://github.com/collective/collective.quickupload/

更多信息

Jean-mat Grimaldi http://macadames.wordpress.com

感谢

  • Adrew Valumns(原始fileuploader.js),

  • Ramon Bartl(集体.uploadify Plone产品的一些代码部分),

  • Ronnie Garcia,Travis Nickels(jquery.uploadify.js)

  • Gilles Lenfant David Pack和Christophe Combelles,Alter Way Solutions,对功能测试、想法和道义支持。

  • Maik Roeder,功能测试

  • Thomas Desvenain,当前维护者

  • Daniel Widerin

  • Wolfgang Thomas

变更日志

1.11.1 (2019-02-12)

  • 在alert()中使用的错误消息中解码htmlentities。[deiferni]

  • 扩展卸载配置文件。[thet]

  • 修复在更新具有特殊字符的文件名时出现的UnicodeDecodeError。[pbauer]

1.11.0 (2017-03-13)

  • 允许自定义错误消息。[jone]

  • 修复错误消息中的重音符号。[jone]

  • 取消对Plone 4.1的支持,因为buildout不再支持Python 2.6。[jone]

1.10.0 (2016-12-07)

  • 修复不一致的“object_unique_id”默认配置值。同时使用“False”作为新安装的默认值,以保持与升级步骤和表单默认值的兼容性。[deiferni]

1.9.0 (2016-11-10)

  • 当文件上传失败时,始终中止事务。这可以防止在创建内容对象后,当文件工厂或文件更新器失败时构建部分文件。[deiferni]

  • 更新荷兰翻译。[maurits]

  • 修复quickuploadportlet.py中与jQuery 1.9+相关的错误,该错误阻止了端口的渲染。添加了try catch子句。[loechel]

1.8.2 (2015-11-13)

  • 添加控制面板选项“使用id作为标题”以不美化标题,而是使用id(“my-file.jpg”而不是“my file”)[maurits]

1.8.1 (2015-11-11)

  • 在查看默认页面时也渲染端口。修复#34。[maurits]

  • 更新荷兰翻译。[maurits]

  • 添加到Python 2.6的测试要求unittest2。[maurits]

  • 将内容类型设置为application/json。text/html与plone.protect 3.0.11失败(无论如何都是错误的)。[reinhardt]

1.8.0 (2015-09-30)

  • 添加属性“选择唯一文件id”。除了“由上传文件覆盖”之外,还可以使用唯一文件id。这种优势在于,您可以在不覆盖文件且文件已存在时不会出错的情况下上传文件。[elioschmutz]

1.7.0 (2015-07-28)

1.6.6 (2014-12-09)

  • jQuery 1.9兼容。[vincentfretin]

  • 重新实现Chrome、Safari和Firefox中的“copy”dopEffect。IE始终显示“move”dropEffect。查看问题https://github.com/collective/collective.quickupload/pull/47以获取更多详细信息。[mathias.leimgruber]

  • 修复了在上传没有设置HTTP_X_REQUESTED_WITH请求头的情况下发生的文件大小检查。[damilgra]

1.6.5 (2014-07-04)

  • 在flash和快速上传中使用相同的函数检测MIME类型。[tschanzt]

1.6.4 (2014-06-03)

  • 为所有皮肤注册QuickUploadViewlet。[thet]

  • 确保IObjectModifiedEvent通知上传的Dexterity对象,就像在Archetypes中发生的那样。[jcbrand]

1.6.3 (2014-02-26)

  • 将CSS资源作为链接而不是导入渲染,以提高性能。[thet]

  • 更完整的卸载配置文件。[thet]

  • 修复过时的zope.app.cache导入。[esteele]

  • 修复browser/configure.zcml中IQuickUploadCapable的使用,以避免引发警告。[cedricmessiant]

  • i18n修复。[thomasdesvenain]

  • 添加升级步骤以添加属性“由上传文件覆盖”。这修复了1.6.1之后的配置面板。[thomasdesvenain]

1.6.2 (2013-12-02)

  • 在helpers.js的末尾添加缺少的分号。[vincentfretin]

1.6.1 (2013-10-18)

  • 请使用MimetypeRegistry的classify函数,因为它更稳健。[tschanzt]

  • 为IE > 9启用拖放上传。包括修复IE 10的fileupload.js。[mathias.leimgruber]

  • 添加荷兰翻译。[maartenkling]

  • 添加设置属性,它是“通过上传文件覆盖”。如果文件夹中已有同名文件,选中:覆盖,未选中:上传错误。[terapyon]

1.6.0 (2013-07-18)

  • 添加plone域和翻译。[macagua]

  • 更新catalog gettext和翻译。[macagua]

  • 添加更多关于i18n的改进。[macagua]

  • 添加更多i18ndude选项到bash脚本。[macagua]

  • 完全迁移到plone.app.testing,而不是混合使用collective.testcaselayer和PloneTestCase。[saily]

  • 重构buildout。[saily]

  • 显式处理HTTP状态码500。[durko]

  • 修复dexterity-content的创建(回归通过d2bf4ff悄悄进入)[till44]

  • Dexterity集成。[pysailor]

  • 添加视图组件作为上传的替代品。[pysailor]

  • 捷克语翻译。[naro]

1.5.8 (2013-01-25)

  • 修复:上传时不删除文件扩展名。[thomasdesvenain]

  • 为IE添加闪存回退。可通过快速上传控制面板进行配置。默认禁用。[mathias.leimgruber]

1.5.7 (2012-12-21)

  • 确保当存在具有相同ID的文档时,不生成新文档。(修复:1.5版本的功能在文件名包含未规范化的字符时不起作用)[thomasdesvenain]

  • 删除尾随逗号。[Julian Infanger]

  • 修复:如果为内容类型选择自动版本策略,则在替换文件时保存版本(用对象已编辑代替对象已修改进行通知)。[thomasdesvenain]

  • 斯洛伐克语翻译。[lck]

  • 仅在预期响应时将ajax响应中的html插入到组件中。如果用户没有足够的权限,ajax响应中返回登录页面,而不是预期的组件内容。[vsomogyi]

  • 在@@quickupload视图中禁用Diazo主题。[dokai]

  • 更新德语翻译。[jone]

  • 使其与plone 4.3兼容(导入已更改)[jensens, bennyboy]

  • 更新意大利语翻译。[keul]

  • 当不需要时,不要创建SESSION对象(见#21)[keul]

1.5.6 (2012-10-09)

  • Dexterity相关的修复。[till44]

  • 更新po文件和法语翻译。[thomasdesvenain]

  • 更新意大利语翻译。[giacomos]

1.5.5 (2012-08-25)

  • 如果上传失败是因为文件夹中不允许内容类型,则添加特定的错误消息。[thomasdesvenain]

1.5.4 (2012-08-17)

  • 一旦创建内容和文件加载,就删除创建标志。[thomasdesvenain]

  • 更新zh-tw和it翻译。[l34marr, giacomos]

1.5.3 (2012-07-13)

1.5.2 (2012-06-29)

  • 当出现MissingExtension错误时,提供更好的错误信息。[thomasdesvenain]

  • 修复IE下文件名包含特殊字符时的上传问题。[thomasdesvenain]

1.5.1 (2012-05-24)

  • 修复西班牙语语言代码。[thomasdesvenain]

1.5 (2012-05-24)

  • 使用IUUID适配器而不是UID方法,以便它也能与Dexterity项目一起工作。[avoinea]

  • 我们可以通过快速上传更新现有文件。如果用户尝试上传一个已经存在的文件,如果允许修改此现有对象,则文件、标题和描述字段将替换为新值。[thomasdesvenain]

  • 德语翻译完成。[mathias.leimgruber]

  • 当文件名没有扩展名时,抛出MissingExtension异常。[taito]

1.4 (2012-03-14)

  • 修复使用虚拟主机_vh_组件的网站上的CSS图像。[dokai]

  • 在清空队列后隐藏按钮。[giacomos]

  • 在每个文件上传后以及所有文件上传完毕后触发自定义JS事件 [avoinea]

  • 更新responseJSON,包含有关上传文件(uid、标题和名称)的更多信息 [avoinea]

  • 更健壮的检查现有文件是否具有相同ID。避免一些不合适的错误信息。[thomasdesvenain]

  • 将接口移动到collective.quickupload.interfaces模块。[thomasdesvenain]

  • 芬兰翻译 [saffe]

1.3.1 (2011-12-22)

  • 仅在显示视图中显示quickupload部件(在编辑表单等中禁用它)。[thomasdesvenain]

  • 在发生失败时添加错误日志。[thomasdesvenain]

  • 与dexterity和没有blobs一起工作。[thomasdesvenain]

1.3.0 (2011-11-29)

  • 添加意大利翻译 [giacomos]

  • 确保如果upload_portal_type设置为自动,则渲染部件。[swampmonkey]

  • 防止diazo主题对json响应进行主题化。[swampmonkey]

  • 如果在部件设置中选择了下载内容类型,并且无法在当前文件夹中添加内容类型,则隐藏部件。[thomasdesvenain]

  • 与dexterity一起工作。我们可以上传具有文件或图像字段的dexterity内容类型。我们可以在dexterity容器中上传内容。[thomasdesvenain]

  • 更新中文翻译。[jianaijun]

1.2.1 (2011-10-10)

  • 如果浏览器是IE,则不要谈论拖放功能(除非版本是IE 9,否则它不起作用)。[thomasdesvenain]

  • 如果安装了chameleon,并且i18n:attributes没有翻译,则标签还没有属性(s)。[swampmonkey]

  • 更新更多的挪威翻译。[tormod, hannosch]

1.2.0 (2011-09-22)

  • 修复尝试上传已存在于文件夹中的文件时的错误信息。[thomasdesvenain]

  • 添加对使用plone.app.testing进行的测试的支持;在卸载包时现在将控制面板移除。[hvelarde]

  • 如果禁用会话,则捕获错误。[swampmonkey]

  • 使用plone.app.portlets.ManagePortlets权限,允许网站管理员添加/编辑部件。[ggozad]

  • 文件夹类型可以实现IQuickUploadNotCapable,这样就不允许在该文件夹上上传。[thomasdesvenain]

  • 我们只可以包括minimal.zcml文件来手动设置IUploadCapable类型。[thomasdesvenain]

  • 将更多消息添加到po文件中+法语翻译。[thomasdesvenain]

  • 使用IQuickUploadCapable接口来测试是否显示部件。避免一些404错误。[thomasdesvenain]

  • 在plone域中将用户定义的标题国际化。[thomasdesvenain]

  • 从css中删除!important,因为它不应该用于基本css。[thomasdesvenain]

  • 部件有左下角和右下角。[thomasdesvenain]

  • 仅对认证用户加载JavaScript和css。参见http://plone.org/products/collective.quickupload/issues/11。[frisi, thomasdesvenain]

  • 修复部件字段验证。[thomasdesvenain]

  • 修复国际化。修复.pot和.po文件。[thomasdesvenain]

  • 在upload_lock受保护代码周围添加try/finally以确保在发生异常时释放锁。[swampmonkey]

  • 添加西班牙语翻译 [hvelarde]

1.1.1 (2011-06-27)

1.1.0 (2011-04-06)

  • MIME类型检测与blobs一起工作(plone 4.0+文件)。[thomasdesvenain]

  • 在ID规范化期间保留文件名中的点。[thomasdesvenain]

  • Plone 4.1兼容性。[vincentfretin]

1.0.3

  • 当mimetype_registry返回None时,让content_type为空,因为mimetype对象将导致“application/octet-stream”。macadames 2010-09-29

  • 使用IQuickUploadFactory接口代替IFileFactory以避免与使用相同接口的其他产品发生冲突http://plone.org/products/collective.quickupload/issues/4 macadames和mroeder 2010-10-07

  • 文件ID合并 macadames和mroeder 2010-10-07

  • 记录一些罕见的异常(错误的id,没有主字段等)解决http://plone.org/products/collective.quickupload/issues/6 macadames 和 mroeder 2010-10-08

  • 修复quick_upload.py中的错误,当typeupload未定义mediaupload时解决http://plone.org/products/collective.quickupload/issues/5 macadames 和 kayeva 2010-10-10

  • 改进doctests(包含对typeupload/mediaupload的最后错误修复)macadames 2010-10-10

  • 修复Plone4中的doctests macadames 2010-10-10

1.0.2

  • IE7 css修复,上传按钮看起来很丑macadames 2010-09-22

  • 修复Firefox xhr上传时有时缺少content-type头的问题macadames 2010-09-24

  • 在setFileName中不要使用unicode,因为它会破坏Archetypes File Field下载(unicode解码错误)macadames 2010-09-24

  • 对上传的medialabel进行了一些小的修复macadames 2010-09-26

1.0.1

  • 修复set_id或check_id方法现在在context上调用,而不是在aq_parent(context)上调用macadames 2010-09-14

  • 减慢移除progressBar的速度,以便在Plone运行得太快时也能看到一些东西 :-) macadames 2010-09-15

  • 尝试使用plone mime_types_registry找到上传文件的合适content_type,当mimetypes.guess_type(file_name)返回(None, None)时macadames 2010-09-17

  • 修复ATFile与content_types相关时的奇怪行为,当传递mutator(data, content_type=content_type)时,content_type并不总是正确的macadames 2010-09-17

  • 不要在setFileName中使用unicode macadames 2010-09-24

  • 修复Firefox xhr上传时有时缺少content-type头的问题macadames 2010-09-24

1.0.0

  • 修复MSIE上的jquery.uploadify,使用临时解决方案,见工单:https://dev.plone.org/plone/ticket/10894 macadames - 2010/09/02

  • 为每个上传器方法启动器使用不同的id,因为我们可能在同一页面上有不同的上传器,例如:图像上传端口号,视频上传端口号macadames - 2010/09/02

  • 移除jquery.uploadify的cookie认证方法(在所有请求中发送cookie不安全),仅保留旧的PloneFlashUpload方法(工单)macadames - 2010/09/02

  • 在fileuploader.js(分支)周围进行了许多改进:添加了autoUpload选项,添加了onAfterSelect选项,使用这些新选项进行了重构macadames - 2010/09/02

  • 添加fileuploader.js jscript启动器macadames - 2010/08/25

  • 将flashupload jscript启动器更改为允许同一页面上有多个上传器macadames - 2010/08/25

  • 为XHR或简单隐藏iframe上传添加fileuploader.js macadames - 2010/08/25

  • 添加快速上传控制面板macadames - 2010/08/25

  • 初始发布:从collective.plonefinder提取上传代码以创建一个独立的包macadames - 2010/08/25

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

collective.quickupload-1.11.1.tar.gz (128.9 kB 查看哈希值)

上传时间 源码

支持者