Download-Dialog für verlinkte File-Objekte
Anstatt direkt im Browser angezeigt zu werden, kann auch ein Download-Dialog für verlinkte File-Objekte erzwungen werden.
Den Download-Dialog kann man über den http-header-Paramater 'Content-Disposition' erzwingen.
Content-disposition: attachment; filename=fname.ext
Ref.: http://support.microsoft.com/kb/260519
Da per ZMS._blobfields.py der http-header stets explizit als 'inline' gesetzt wird
Z.639: MyBlob.__call__
RESPONSE.setHeader('Content-Disposition','inline;filename=%s'%self.getFilename())
muss man sich eine gesonderte Rückgabemethode schrieben, die allerdings verblüffend einfach ist:
# Script (Python) #
request = container.REQUEST
RESPONSE = request.RESPONSE
try:
file=context.getObjProperty('file',request)
filetype=file.getContentType()
filename=file.getFilename()
filesize=file.getDataSizeStr()
fileurl=file.getHref(request)
RESPONSE.setHeader('Content-Type', filetype)
RESPONSE.setHeader('Content-Length', filesize)
RESPONSE.setHeader('Content-Disposition','attachment;filename=%s'%filename)
return file.getData()
except:
return 'Error: File not found'