Node.js (extTypes.js):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | module.exports = { "3gp" : "video/3gpp" , "a" : "application/octet-stream" , "ai" : "application/postscript" , "aif" : "audio/x-aiff" , "aiff" : "audio/x-aiff" , "asc" : "application/pgp-signature" , "asf" : "video/x-ms-asf" , "asm" : "text/x-asm" , "asx" : "video/x-ms-asf" , "atom" : "application/atom+xml" , "au" : "audio/basic" , "avi" : "video/x-msvideo" , "bat" : "application/x-msdownload" , "bin" : "application/octet-stream" , "bmp" : "image/bmp" , "bz2" : "application/x-bzip2" , "c" : "text/x-c" , "cab" : "application/vnd.ms-cab-compressed" , "cc" : "text/x-c" , "chm" : "application/vnd.ms-htmlhelp" , "class" : "application/octet-stream" , "com" : "application/x-msdownload" , "conf" : "text/plain" , "cpp" : "text/x-c" , "crt" : "application/x-x509-ca-cert" , "css" : "text/css" , "csv" : "text/csv" , "cxx" : "text/x-c" , "deb" : "application/x-debian-package" , "der" : "application/x-x509-ca-cert" , "diff" : "text/x-diff" , "djv" : "image/vnd.djvu" , "djvu" : "image/vnd.djvu" , "dll" : "application/x-msdownload" , "dmg" : "application/octet-stream" , "doc" : "application/msword" , "dot" : "application/msword" , "dtd" : "application/xml-dtd" , "dvi" : "application/x-dvi" , "ear" : "application/java-archive" , "eml" : "message/rfc822" , "eps" : "application/postscript" , "exe" : "application/x-msdownload" , "f" : "text/x-fortran" , "f77" : "text/x-fortran" , "f90" : "text/x-fortran" , "flv" : "video/x-flv" , "for" : "text/x-fortran" , "gem" : "application/octet-stream" , "gemspec" : "text/x-script.ruby" , "gif" : "image/gif" , "gz" : "application/x-gzip" , "h" : "text/x-c" , "hh" : "text/x-c" , "htm" : "text/html" , "html" : "text/html" , "ico" : "image/vnd.microsoft.icon" , "ics" : "text/calendar" , "ifb" : "text/calendar" , "iso" : "application/octet-stream" , "jar" : "application/java-archive" , "java" : "text/x-java-source" , "jnlp" : "application/x-java-jnlp-file" , "jpeg" : "image/jpeg" , "jpg" : "image/jpeg" , "js" : "application/javascript" , "json" : "application/json" , "log" : "text/plain" , "m3u" : "audio/x-mpegurl" , "m4v" : "video/mp4" , "man" : "text/troff" , "mathml" : "application/mathml+xml" , "mbox" : "application/mbox" , "mdoc" : "text/troff" , "me" : "text/troff" , "mid" : "audio/midi" , "midi" : "audio/midi" , "mime" : "message/rfc822" , "mml" : "application/mathml+xml" , "mng" : "video/x-mng" , "mov" : "video/quicktime" , "mp3" : "audio/mpeg" , "mp4" : "video/mp4" , "mp4v" : "video/mp4" , "mpeg" : "video/mpeg" , "mpg" : "video/mpeg" , "ms" : "text/troff" , "msi" : "application/x-msdownload" , "odp" : "application/vnd.oasis.opendocument.presentation" , "ods" : "application/vnd.oasis.opendocument.spreadsheet" , "odt" : "application/vnd.oasis.opendocument.text" , "ogg" : "application/ogg" , "p" : "text/x-pascal" , "pas" : "text/x-pascal" , "pbm" : "image/x-portable-bitmap" , "pdf" : "application/pdf" , "pem" : "application/x-x509-ca-cert" , "pgm" : "image/x-portable-graymap" , "pgp" : "application/pgp-encrypted" , "pkg" : "application/octet-stream" , "pl" : "text/x-script.perl" , "pm" : "text/x-script.perl-module" , "png" : "image/png" , "pnm" : "image/x-portable-anymap" , "ppm" : "image/x-portable-pixmap" , "pps" : "application/vnd.ms-powerpoint" , "ppt" : "application/vnd.ms-powerpoint" , "ps" : "application/postscript" , "psd" : "image/vnd.adobe.photoshop" , "py" : "text/x-script.python" , "qt" : "video/quicktime" , "ra" : "audio/x-pn-realaudio" , "rake" : "text/x-script.ruby" , "ram" : "audio/x-pn-realaudio" , "rar" : "application/x-rar-compressed" , "rb" : "text/x-script.ruby" , "rdf" : "application/rdf+xml" , "roff" : "text/troff" , "rpm" : "application/x-redhat-package-manager" , "rss" : "application/rss+xml" , "rtf" : "application/rtf" , "ru" : "text/x-script.ruby" , "s" : "text/x-asm" , "sgm" : "text/sgml" , "sgml" : "text/sgml" , "sh" : "application/x-sh" , "sig" : "application/pgp-signature" , "snd" : "audio/basic" , "so" : "application/octet-stream" , "svg" : "image/svg+xml" , "svgz" : "image/svg+xml" , "swf" : "application/x-shockwave-flash" , "t" : "text/troff" , "tar" : "application/x-tar" , "tbz" : "application/x-bzip-compressed-tar" , "tcl" : "application/x-tcl" , "tex" : "application/x-tex" , "texi" : "application/x-texinfo" , "texinfo" : "application/x-texinfo" , "text" : "text/plain" , "tif" : "image/tiff" , "tiff" : "image/tiff" , "torrent" : "application/x-bittorrent" , "tr" : "text/troff" , "txt" : "text/plain" , "vcf" : "text/x-vcard" , "vcs" : "text/x-vcalendar" , "vrml" : "model/vrml" , "war" : "application/java-archive" , "wav" : "audio/x-wav" , "wma" : "audio/x-ms-wma" , "wmv" : "video/x-ms-wmv" , "wmx" : "video/x-ms-wmx" , "wrl" : "model/vrml" , "wsdl" : "application/wsdl+xml" , "xbm" : "image/x-xbitmap" , "xhtml" : "application/xhtml+xml" , "xls" : "application/vnd.ms-excel" , "xml" : "application/xml" , "xpm" : "image/x-xpixmap" , "xsl" : "application/xml" , "xslt" : "application/xslt+xml" , "yaml" : "text/yaml" , "yml" : "text/yaml" , "zip" : "application/zip" }; |
轉址下載用法
Node.js (main.js):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var express = require( "./node_modules/express" ), fs = require( "fs" ), extTypes = require( "./extTypes.js" ); var app = express(); var port = 1337; app.listen(port); app.use( '/' , express.static(__dirname + '/html/' )); app.get( "/download" , function (req, res) { var file = "./upload/20140210/ahg056fg01sa40df8sd9" ; var filename = "firefox.png" ; var mimetype = extTypes[ "png" ]; res.setHeader( 'Content-disposition' , 'attachment; filename=' + filename); res.setHeader( 'Content-type' , mimetype); var filestream = fs.createReadStream(file); filestream.pipe(res); }); console.log( "Start express server" ); |
學習步驟:
1. 檔案網路安全概念。
2. 學習如何將現有下載功能改成轉址方式。
作業:
1. 採用更安全的方式,利用讀檔寫檔設計一個可編輯公告內容的網站。
沒有留言:
張貼留言