クライアントからnodejsサーバ経由でpostgresqlにmultipart/form-dataを送信したい エクスプレスフォームデータモジュールを使用しています。 サーバコード:私は、画像データのbyteaのタイプを設定しているイメージタイプファイルをpostgresqlに送信するためにnode.jsに必要な変換
var formData = require("express-form-data");
var BodyParser=require('body-parser');app.use(BodyParser.json()).use(formData.parse()).use(formData.format()).use(formData.stream()).use(formData.union());
app.post('/create-user',function(req,res){
var username=req.body.username;
var password=req.body.password;
..........................
var img=(req.files.pic).toString('HEX')+'\\x';
pool.query('INSERT into "Users" (username,password,"full
name","D.O.B",emailid,sex,img) VALUES ($1,$2,$3,$4,$5,$6,$7)',
[username,hashpass,name,dob,email,sex,img],function(err,result){ if (err) {
res.status(500).send(err.toString());
その明白。 このスキップイメージ入力を試みましたが、他のすべてのフィールドは正常に挿入されました。 しかし私は画像をポストグルに挿入するロジックを得ていません。私はhav他のstackoverflowの答えをどこでも検索しました。私はbytea型に画像データを変換する方法を見つけることができました。私のデータベースとnodejsはUTF8エンコーディングに設定されています。何の変換のようなエラーが行われていない場合
たbytea型に対する無効な入力構文:私は エラーを取得するコードスニペットに示すように16進文字列にIMGの変換の データベースサーバーは接続を拒否は、コンソールが彼らの後にカントセットヘッダを言うnodejs送られた。 img
は、おそらくタイプBufferのある
var columnDataToInsert = '\\x' + img.toString('hex');
:bytea
列を挿入するため
私はそれを試しました、エラーがあります:無効な[['16進数字。私はconsole.log(img)を確認して[オブジェクトオブジェクト]を表示していますので、何とか構文解析する必要があります – Biboswan
@Biboswanあなたの 'img'は' Buffer'型であると考えられます。 –
Buffer.isBuffer(req.files.pic)はfalseを返す – Biboswan