title: Error code 500 when sending multipart data
body: <p>I am using Alamofire to send multipart data to my Nodejs and Express API. I am using Multer to upload an image file and some text parameters. For some reason, I am able to upload the image file, but I am unable to send text, such as "title", "price", and "description" - which is probably why I continue to receive a 500 error code when I try to upload from Swift app. I am not sure what the issue is. What am I doing wrong? Here is my Express route:</p>
  
  <pre><code>var multer = require('multer');
  var upload = multer({ dest: 'public/uploads/'})
  
  var app = express();
  
  app.use(function(err, req, res, next) {
      console.log(err);
      next(err);
  });
  
  var server = app.listen(3000, () =&gt; {
    console.log('listening on *:3000');
  });
  
  
  app.get('/', (req, res) =&gt; {
    res.sendFile(__dirname + '/index.html');
  });
  
  // get request params
  app.use(bodyParser.urlencoded({ extended: false }));
  app.use(bodyParser.json());
  
  
  // log to console
  app.use(morgan('dev'));
  
  
  app.use(express.static('public'));
  
  
  // use passport package in app
  app.use(passport.initialize());
  app.use(passport.session());
  
  
  app.use(multer({dest:'./uploads/'}).single('images'));
  
  
  /*
  app.get('/', function(req, res) {
    res.send('Hello! Welcome to the land of dragons!');
  })
  */
  
  
  // pass passport for config
  require('./config/passport')(passport);
  
  
  
  
  // create new product
  app.post('/newproduct', upload.single('images'), function (req, res) {
  
     if (req.body.title == '' || req.body.price == '') {
      res.json({success: false, msg: 'Please add title and price.'});
      console.log('title: ' + req.body.title);
      console.log('price: ' + req.body.price);
    } else {
  
      var newProduct = new Product({
       title: req.body.title,
       price: req.body.price,
       description: req.body.description,
       images: req.file
  
      });
  
  
      console.log(req.body);
      console.log(req.file);
  
      // save the new product
      newProduct.save(function(err) {
        if (err) {
         res.json({success: false, msg: 'Listing was unsuccessful.'});
        } else {
         res.json({success: true, msg: 'Successful creating a new product!'});
         console.log(newProduct.createdAt);
         console.log(newProduct.updatedAt);
        }
  
      });
  
    }
  
  });
  </code></pre>
  
  <p>When I try to make a POST request in Postman, it gives me the error msg "Listing was unsuccessful." because a title and price is required to save the object.</p>
  
  <p>And this is what I get in my Terminal:</p>
  
  <pre><code>    {}
  { fieldname: 'images',
    originalname: 'Screen Shot 2016-07-27 at 2.48.14 PM.png',
    encoding: '7bit',
    mimetype: 'image/png',
    destination: './uploads/',
    filename: 'b3247d2b48591c1d6e47f5413647979b',
    path: 'uploads/b3247d2b48591c1d6e47f5413647979b',
    size: 285034 }
  POST /newproduct 200 14.081 ms - 51
  </code></pre>
  
  <p>And when I try make a POST request in my iOS simulator, I get this error:</p>
  
  <pre><code>  Error Domain=com.alamofire.error Code=-6003 
      "Response status code was unacceptable: 500" 
  UserInfo={StatusCode=500, NSLocalizedFailureReason=Response status code was unacceptable: 500}
  </code></pre>
  
  <p>I read that the 500 error code is most likely a server-side issue, but just to be sure - here is my Swift code:</p>
  
  <pre><code>let url = "http://localhost:3000/newproduct"
  
  
      Alamofire.upload(.POST, url, multipartFormData: { multipartFormData in
  
          let image: UIImage = self.productImage.image!
  
              if let imageData = UIImagePNGRepresentation(image) {
                  multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "fileName.png", mimeType: "image/png")
                  multipartFormData.appendBodyPart(data: self.titleLabel.text!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"title")
                  multipartFormData.appendBodyPart(data: self.descriptionLabel.text!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"description")
                  multipartFormData.appendBodyPart(data: self.priceLabel.text!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"price")
          }
  
          }, encodingCompletion: { encodingResult in
  
              switch encodingResult {
              case .Success(let upload, _, _):
                  upload.validate()
                  upload.responseJSON { response in
  
                      switch response.result {
                      case .Success:
                          print("success")
  
  
  
  
                      case .Failure(let error):
                          print(error)
                      }
  
                  }
              case .Failure(let encodingError):
                  print(encodingError)
              }
  
      })
  </code></pre>
  
  <p>I referred to this post <a href="https://stackoverflow.com/questions/31949118/send-post-parameters-with-multipartformdata-using-alamofire-in-ios-swift">on Stackoverflow</a> as well.</p>
  
  <p>If you need anymore details, please let me know. My API is a large file, so I did not want to upload everything.</p>