2017-06-29 71 views
0

我想通過服務器的NodeJS從客戶端發送的multipart/form-data的到PostgreSQL 在我的NodeJS我用快遞形式的數據模塊所需的基本轉換。 服務器代碼:在node.js中用於發送圖像類型的文件到PostgreSQL

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()); 

其明顯我已成立BYTEA類型的圖像數據。 我試過這個滑動圖像輸入和所有其他領域插入成功。 但我沒有得到插入圖像postgres的邏輯。我hav搜索其他stackoverflow答案無處可以找到如何將圖像數據轉換爲bytea類型。我的數據庫和nodejs設置爲UTF8編碼。 上所顯示的代碼片段轉換IMG爲十六進制的字符串,我得到 錯誤:一個butea

無效的輸入語法,如果沒有轉換完成這樣的錯誤: 數據庫服務器仍然拒絕連接,的NodeJS控制檯說斜面後,他們設置頭被髮送。

回答

0

用於插入bytea柱:

var columnDataToInsert = '\\x' + img.toString('hex'); 

哪裏img大概是Buffer類型。

+0

我試過了,出現錯誤:無效'['十六進制數字。我檢查了console.log(img)它顯示[對象對象]因此我需要以某種方式解析 – Biboswan

+0

@Biboswan你的'img'應該是'Buffer'類型,檢查它是這種情況。 –

+0

Buffer.isBuffer(req.files.pic)給出錯誤 – Biboswan

相關問題