Plone的纯JavaScript文件上传工具,支持拖放、多选和进度条。
项目描述
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。
仓库
更多信息
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)
将冲突错误的处理移至客户端。这允许Zope通过重试事务来解决大多数写入冲突。(见https://github.com/collective/collective.quickupload/pull/49)。[lgraf]
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)
修复文件名中包含多个“.”字符时标题生成问题。修复http://plone.org/products/collective.quickupload/issues/24 [Manuel Reinhart, thomasdesvenain]
当内容类型实现了IFileContent和IImageContent接口时,组件表单不会中断。修复http://github.com/collective/collective.quickupload/issues/9。 [vito80ba, thomasdesvenain]
在没有plone.uuid的情况下工作(例如,使用Plone 4.0.x基本安装)。 [frisi, do3cc, thomasdesvenain]
更新中文翻译。[jianaijun]
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)
在上传时通知ObjectInializedEvent。修复http://plone.org/products/collective.quickupload/issues/7 [thomasdesvenain,感谢lars.eisbaer]
将content_type传递给ContentTypeRegistry。修复http://plone.org/products/collective.quickupload/issues/13/ [thomasw]
添加巴西葡萄牙语翻译 [erico_andrei]
Quickupload表单允许为每个上传的文件填写描述 [regisrouet]
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b922a8eb8d825f00da0be22dea19560dbd6396343c9cd466ea7a516305214250 |
|
MD5 | 3f7808ef1fe7c51d4cc196ab25a57223 |
|
BLAKE2b-256 | 0f3f77b2164245f3069b454667566aff50d76fc0bb3ec2f8c6d2460756b0c80b |