2016-08-18 15 views
0

Node.jsサーバを使用していますが、この種のイメージのMIMEタイプを見つける方法はありますか?私はブラウザがブラウザでそれを開く代わりにイメージをダウンロードしているので、それが必要です。拡張子のない画像のMIMEタイプを見つける方法は?

gm(GraphicsMagick)パッケージを使用して画像にテキストを書き込んだり、拡張子を持たないフォルダに保存したりしています。 res.sendFile('project root/uploads/cache/1')経由でこのパスを送信すると、ブラウザはその画像を理解せず、ダウンロードします。同じタブで開くようにします。

また、設定を試したところ、image/*ブラウザが画像をダウンロードしました。 React-Nativeアプリでこの種のAPIを問題なく使用できるかどうかはわかりません。 - Date.now(

Router.js

multer = require('multer'), 

storage = multer.diskStorage({ 
    // Configuring multer to upload towards the public/uploads map 
    destination: function(req, file, cb) { 
     cb(null, 'public/uploads') 
    }, 
    // Rename the file, so we can create a reference to save in the database. 
    filename: function(req, file, cb) { 
     var ext = file.originalname.split('.') 
     cb(null, 'upload-' + Date.now() + '.' + ext[ext.length - 1]) 
    } 

}) 

// Assign the configured storage to the upload. 
upload = multer({ 
    storage: storage, 
}) 

私は(multerがデフォルトで行うように)アップロードにすべての画像の名前を変更するために、私のストレージを設定:あなたは、ファイルのアップロードミドルウェアとしてmulterを使用すると仮定すると、

答えて

1

)とext配列内の拡張。この方法では、ファイルは拡張子で保存され、自動的に次のような結果得られます:

Example how it looks when uploaded

+0

私は私がmulterまたは任意のマルチパートフォームデータを使用していない、私は前にこれを言及していませんでし申し訳ありませんが、私はGM使用しています(GraphicsMagick)パッケージを使用してテキストを画像に書き込んだり、拡張子を持たないフォルダに保存したりすることができます。 'res.sendFile(__ dirname + '/ uploads/cache/1')'でこのパスを送ると、ブラウザはその画像を理解してダウンロードしません。同じタブで開くことができます –

1

一つのアプローチ、すでに(私はあまりにも多くの時間を費やすことはありませんライブラリにあなたのために行われていますノード):拡張子にファイルシグネチャのマップを作成し、アップロードされたファイルの最初の数桁の16進数で照会します。

ファイル署名(別名「マジックナンバー」)とその拡張子の良いソース: https://en.wikipedia.org/wiki/List_of_file_signatures

関連する問題