Garaku49
@Garaku49 (我 楽)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ajax通信について node.jsのmulterでの画像保存

解決したいこと

node.jsのmulterモジュールを使用して、画像と一緒に文字データを送信した場合のみサーバー側でデータが取得できないということが起こっています。
理由に心当たりがある方は何故出来ないのか教えてくれば嬉しいです。

該当するソースコード

エラーが出ているというか、バグが起こっているソースコードが以下の通りです。クライアント側とサーバー側の順番で置いています。

$(function(){
  $('#button').click(function(){
    let fd = new FormData();
    let text = $('#text').val();
    let file =$('#file').files[0];
    fd.append('text',text);
    fd.append('files',file);
    $.ajax({
      url:'url',
      method: 'post',
      processData: false,
      contentType: false,
      data: fd,
      dataType: 'json',
      success: function(data) {
        alert(data.msg);
        console.log(data);
      },
      error: function(xhr, status, error) {
        alert('ERROR : ' + status + ' : ' + error);
      }
    });
  })
})
var express = require('express')
var router = express.Router()
var multer = require("multer");

var storage = multer.diskStorage({
  // ファイルの保存先を指定
  destination: function (req, file, cb) {
    cb(null, './public/blog')
  },
  // ファイル名を指定(オリジナルのファイル名を指定)
  filename: function (req, file, cb) {
    cb(null, file.originalname)
  }
});
var upload = multer({ storage: storage });

router.post('/',upload.array('files'),function(req,res){
  console.log(req.body);
  console.log(req.files);
  res.send({msg:'test'});
});

module.exports = router;

文字データに関して何も出てこない。

[Object: null prototype] {}
[
  {
    fieldname: 'files',
    originalname: 'aaa.jpeg',
    encoding: '7bit',
    mimetype: 'image/jpeg',
    destination: './public',
    filename: 'aaa.jpeg',
    path: 'public/aaa.jpeg',
    size: 153262
  }
]

試した事

ソースコードは上記のまま。
画像データと文字データを一緒に送らない。
画像デーただけ:

[Object: null prototype] {}
[
  {
    fieldname: 'files',
    originalname: 'aaa.jpeg',
    encoding: '7bit',
    mimetype: 'image/jpeg',
    destination: './public',
    filename: 'aaa.jpeg',
    path: 'public/aaa.jpeg',
    size: 153262
  }
]

パスの先に画像が保存できているのは確認できています。

文字データだけ:

[Object: null prototype] {
  text: 'test',
}
[]
0

No Answers yet.

Your answer might help someone💌