コンテンツタイプを設定するには、node.jsを使用してファイルのファイルタイプを取得する必要があります。ファイル拡張子を簡単に確認できることは知っていますが、コンテンツタイプimage/png
、text/html
asoを持つ必要のある拡張子のないファイルもあります。
これは私のコードです(あまり意味をなさないことはわかっていますが、それが必要なベースです)。
var http = require("http"),
fs = require("fs");
http.createServer(function(req, res) {
var data = "";
try {
/*
* Do not use this code!
* It's not async and it has a security issue.
* The code style is also bad.
*/
data = fs.readFileSync("/home/path/to/folder" + req.url);
var type = "???"; // how to get the file type??
res.writeHead(200, {"Content-Type": type});
} catch(e) {
data = "404 Not Found";
res.writeHead(404, {"Content-Type": "text/plain"});
}
res.write(data);
res.end();
}).listen(7000);
[〜#〜] api [〜#〜] にはそのための関数が見つかりませんでした。
mmmagic module をご覧ください。これはlibmagicバインディングであり、まさにあなたが望むことをするようです。
MIMEタイプを検索するためのヘルパーライブラリがあります https://github.com/broofa/node-mime
var mime = require('mime');
mime.getType('/path/to/file.txt'); // => 'text/plain'
しかし、それでもルックアップには拡張子を使用します
コマンドラインツールfile
(Linux)をご覧ください。ファイルの最初の数バイトに基づいてファイルタイプを推測しようとします。 child_process.spawn
を使用して、ノード内から実行できます。
私はこれを使用しました:
npm install mime-types
そして、コード内:
var mime = require('mime-types');
tmpImg.contentType = mime.lookup(fileImageTmp);
FileImageTmpは、ファイルシステム(この場合はtmp)に格納されているイメージのコピーです。
私が見ることができる結果は:image/jpeg