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'