2017-06-29 17 views
0

クライアントから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列を挿入するため

答えて

0

+0

私はそれを試しました、エラーがあります:無効な[['16進数字。私はconsole.log(img)を確認して[オブジェクトオブジェクト]を表示していますので、何とか構文解析する必要があります – Biboswan

+0

@Biboswanあなたの 'img'は' Buffer'型であると考えられます。 –

+0

Buffer.isBuffer(req.files.pic)はfalseを返す – Biboswan

関連する問題