Ns returnfile
ns_returnfile 200 "application/zip" $filepath
ns_returnfile 200 [ns_guesstype $file] $filepath
Caveat programmor
ns_returnfile uses fastpath internally, so care should be taken when using it to return dynamically generated files. A better practice if dealing with dynamic data in the filesystem would probably be to use ns_return instead. For example:
set fd [open $myfile] ns_unlink $myfile; # So that nothing else can access the file from the filesystem ns_return 200 [ns_guesstype $myfile] [read $fd] close $fd
Want to name the file returned?
ns_set update [ns_conn outputheaders] content-disposition "attachment; filename=1.abc"