sails.js
で小さなアプリを作成していますが、データベースに画像を保存する必要があります。そのためには、画像をbase64でエンコードされたデータURLに変換して、帆のモデルに文字列として保存できるようにする必要があります。ただし、この形式で変換する方法はわかりません。古い質問はすべて、画像をbase64でエンコードされたデータURLに変換することについて質問し、クライアント側でそれを行うことについてこれに答えます。ただし、ポストリクエストで画像を取得する際に、サーバー側でそれを行いたいと思います。どうすればこれを達成できますか?
私が理解しているように、あなたはファイルをbase64でエンコードされた文字列に変換したいと思っています。ファイルが画像であるかどうかは関係ありません。
var fs = require('fs');
// function to encode file data to base64 encoded string
function base64_encode(file) {
// read binary data
var bitmap = fs.readFileSync(file);
// convert binary data to base64 encoded string
return new Buffer(bitmap).toString('base64');
}
使用法:
var base64str = base64_encode('kitten.jpg');
これはreadFileSyncで実現でき、最初のパラメーターとして画像パスを渡し、2番目としてエンコードオプションを渡します。以下に示すように:
var fs = require('fs');
var imageAsBase64 = fs.readFileSync('./your-image.png', 'base64');
node ドキュメントに従って:
fs.readFileSync(path [、options])
Fs.readFile()の同期バージョン。パスの内容を返します。
エンコードオプションが指定されている場合、この関数は文字列を返します。それ以外の場合は、バッファを返します。
もう1つの簡単な方法は、画像をリストするときに使用します
@{
if (item.ImageData != null)
{
string imageBase64 = Convert.ToBase64String(item.ImageData);
string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);
<img src="@imageSrc" width="100" height="100" />
}
}