Mimetype Table
Node.js (extTypes.js):
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):
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. 採用更安全的方式,利用讀檔寫檔設計一個可編輯公告內容的網站。