--- upload.module.orig 2006-07-04 09:24:33.000000000 -0700 +++ upload.module 2006-11-15 15:21:33.000000000 -0800 @@ -150,7 +150,17 @@ if (user_access('view uploaded files')) { $node = node_load($file->nid); if (node_access('view', $node)) { - $name = mime_header_encode($file->filename); + // Mime filename should be double quoted to handle filenames with spaces + if (preg_match('/[^\x20-\x7E]/', $file->filename)) { + // CASE 1 : non-ascii --> needs encoding. + $name = mime_header_encode($file->filename); + } else if (preg_match('/[ \(\)\<\>\@\,\;\:\\\"\/\[\]\?\=]/', $file->filename)) { + // CASE 2 : n tokens, tspecials characters, SHOULD be 'quoted-string'. + $name = '"'.$file->filename.'"'; + } else { + // CASE 3 : only ascii, one token, no tspecials. + $name = $file->filename; + } $type = mime_header_encode($file->filemime); // Serve images and text inline for the browser to display rather than download. $disposition = ereg('^(text/|image/)', $file->filemime) ? 'inline' : 'attachment';