Index: src/zope/app/http/put.py =================================================================== --- src/zope/app/http/put.py (revision 30380) +++ src/zope/app/http/put.py (working copy) @@ -15,7 +15,7 @@ """ __docformat__ = 'restructuredtext' -from zope.component import queryAdapter +from zope.component import queryAdapter, queryMultiAdapter from zope.app.http.interfaces import INullResource from zope.app.filerepresentation.interfaces import IWriteFile from zope.app.filerepresentation.interfaces import IWriteDirectory, IFileFactory @@ -70,6 +70,10 @@ # Now try to get a custom factory for he container factory = queryAdapter(container, IFileFactory, ext) + if factory is None: + factory = queryMultiAdapter((container, request), + IFileFactory) + # Fall back to a non-custom one if factory is None: factory = IFileFactory(container) @@ -104,8 +108,12 @@ body = self.request.bodyFile file = self.context - adapter = IWriteFile(file) + adapter = queryMultiAdapter((file, request), IWriteFile) + + if adapter is None: + adapter = IWriteFile(file) + # TODO: Need to add support for large files data = body.read()