Tech Tip: How to send non-html files using SEND HTML BLOB
PRODUCT: 4D | VERSION: 11 | PLATFORM: Mac & Win
Published On: July 16, 2009
Here is a wrapper method for SEND HTML BLOB that will automatically detect the MIME type of the file. If the mime type cannot be detected, the file is sent to the browser with the mime type of "application/x-unknown". The list of mime types was obtained from documentation page for SEND HTML BLOB. It is necessary because SEND HTML FILE only sends HTML files, you can use SEND HTML BLOB to send all kinds of files to the browser.
` METHOD: wwwSendFile ` ` Parameters: 1 ` ` $1: path to file being sent ` ` Notes: Essentially this is a wrapper SEND HTML BLOB that will ` make it easier to send non HTML files with this command Case of : (Count parameters=1) C_BOOLEAN($fQuit) C_TEXT($1;$request;$tmp;$mime;$extension) C_LONGINT($count;$pos) $request:=$1 $tmp:=$request $count:=0 $fQuit:=False $mime:="" Repeat $pos:=Position(".";$tmp;2) $tmp:=Substring($tmp;$pos) $extension:=$tmp Case of :($extension=".htm") $mime:="text/html" :($extension=".html") $mime:="text/html" :($extension=".shtml") $mime:="text/html" :($extension=".shtm") $mime:="text/html" :($extension=".css") $mime:="text/css" :($extension=".pdf") $mime:="application/pdf" :($extension=".rtf") $mime:="application/rtf" :($extension=".ps") $mime:="application/postscript" :($extension=".eps") $mime:="application/postscript" :($extension=".hqx") $mime:="application/mac-binhex40" :($extension=".js") $mime:="application/javascript" :($extension=".txt") $mime:="text/Plain" :($extension=".text") $mime:="text/Plain" :($extension=".gif") $mime:="image/gif" :($extension=".png") $mime:="image/png" :($extension=".jpg") $mime:="image/jpeg" :($extension=".jpeg") $mime:="image/jpeg" :($extension=".jpe") $mime:="image/jpeg" :($extension=".jfif") $mime:="image/jpeg" :($extension=".pic") $mime:="image/pict" :($extension=".pict") $mime:="image/pict" :($extension=".tif") $mime:="image/tiff" :($extension=".tiff") $mime:="image/tiff" :($extension=".mpeg") $mime:="video/mpeg" :($extension=".mpg") $mime:="video/mpeg" :($extension=".mov") $mime:="video/quicktime" :($extension=".moov") $mime:="video/quicktime" :($extension=".aif") $mime:="audio/aiff" :($extension=".aiff") $mime:="audio/aiff" :($extension=".wav") $mime:="audio/wav" :($extension=".ram") $mime:="audio/x-pn-realaudio" :($extension=".sit") $mime:="application/x-stuffit" :($extension=".bin") $mime:="application/x-stuffit" :($extension=".z") $mime:="application/x-zip" :($extension=".zip") $mime:="application/x-zip" : ($extension=".gz") $mime:="application/x-gzip" : ($extension=".tar") $mime:="application/x-tar" Else $mime:="" $count:=$count+1 If ($count > 19) $mime:="application/x-unknown" $fQuit:=True End if End case Until (($mime#"") | ($fQuit=True)) If ($mime#"") C_BLOB($blob) DOCUMENT TO BLOB($request;$blob) SEND HTML BLOB($blob;$mime) End if End case |
See Also:
Commented by Timothy Penner on July 16, 2009 at 6:09 PM
This wrapper method becomes very useful when using a "web decoy"