Node.jsの更新による複数画像の投稿について詰まったところ

今回は既にinsert済みのshopテーブルにてnullで指定していた画像を投稿するカラムの更新について詰まった点を記述する

 

使用コードは2点

formタグを使用してpost処理を実行する

myprofileEdit.ejs

 

postを受け取りupdate文を実行する

myprofile_img.js

 

コードは以下

 

myprofileEdit.ejs

<h2>画像情報編集</h2>
<form action="/myprofile_img" method="post" enctype="multipart/form-data">
プロフィール写真の変更<input type="file" name="account_img"><br>
<input type="submit" value="送信">
</form>
<form action="/myprofile_img2" method="post" enctype="multipart/form-data">
店舗詳細写真の変更 <input type="file" name="shop_img"><br>
<input type="submit" value="送信">
</form>
<form action="/myprofile_img3" method="post" enctype="multipart/form-data">
店舗画像1<input type="file" name="img1"><br>
<input type="submit" value="送信">
</form>
<form action="/myprofile_img4" method="post" enctype="multipart/form-data">
店舗画像2<input type="file" name="img2"><br>
<input type="submit" value="送信">
</form>

(上記コードは画像投稿に使用しているform部分を抜粋)

上記では4つの画像投稿をするため処理を行うjsファイルを4つ用意しそれぞれのjsファイルで処理を実行している

 

myprofile_img.js

router.post('/', upload.single('account_img'), function (req, res, next) {
console.log(req.file);
console.log(req.file.filename);
var userId = req.session.user_id? req.session.user_id: 0;

var sql='UPDATE shop SET account_img = ? WHERE user_id = '+ userId +'';
connection.query(sql, [req.file.filename],(error,result)=>{
res.redirect('/myprofile')
})
})

(上記コードはpostされた値を処理する部分を抜粋)

内容としては

upload.single('account_img'),

部分のaccount_imgのところがmyprofileEdit.ejsのformタグ内inputタグの

input type="file" name="account_img"><br>

上記name部分で指定した内容を記述することになっている。

参考:https://reffect.co.jp/node-js/express-js-file-upload

(1.4 ルーティングの設定参照)

試したこと

upload.single('account_img',shop_img'),

上記のようにshop_imgを追加し

var sql='UPDATE shop SET account_img = ?, shop_img = ? WHERE user_id = '+ userId +'';
connection.query(sql, [req.file.filename, req.file.filename],(error,result)=>{

のようにupdate文にもshop_imgを追加してみた

 

しかしこれはエラーとなり実行不可

そのため、上述のコードのようにformタグを4つとそれに対応するjsファイルを4つ使用して更新処理が出来るようにいったん実装をした。

 

1つのformタグで4つの画像を更新する方法はあるのだろうか、、検証は続く