无法将上传的表单文件发送到快速服务器

时间:2017-01-11 13:07:11

标签: express multer

我正在使用Redux-Form创建一个包含输入字段的表单以及一个用于上传文件的字段。我最终想抓住该文件并将其上传到AWS S3,而不是将其存储到我服务器上的目的地。我的问题是抓住服务器上的文件。从客户端(浏览器),我可以console.log我的表单值,特别是我上传的文件的字段,我得到这个:

{
  lastModified: 1484133350000,
  lastModifiedDate: Wed Jan 11 2017 06:15:50 GMT-0500 (EST),
  name: "sample_tix.pdf",
  size: 6872,
  type: "application/pdf",
  webkitRelativePath: "",
}

然而,当它到达我的快速服务器并且我在console.log文件中时,它显示为:

{}

我不确定为什么文件信息会出现在客户端上,但不会出现在服务器上。

我在multer上读了一些内容,但是当我设置我的服务器时它似乎返回undefined:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const multer = require('multer');

const app = express();

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/my-api', multer().single(), function(req, res, next) {
  const values = req.body;
  const uploadedFile = req.files;
  console.log(uploadedFile); //undefined
});

我应该能够从req.files中提取上传的文件信息,但它会以undefined的形式返回。

我不确定究竟是什么问题,所以任何和所有的帮助都将不胜感激。谢谢。

更新:以下是我向服务器发出请求的redux操作:

import axios from 'axios';
import {
  CREATE_LISTING_SUCCESS,
  CREATE_ANOTHER_LISTING,
} from './types';
import { url } from '../../api/config';

export function createListing(values, userId) {
  return (dispatch) => {
    axios.post(`${url}/my-api`, {
      values,
      userId,
    }).then(payload => {
      dispatch({
        type: CREATE_LISTING_SUCCESS,
        payload: payload.data,
      });
    });
  };
}

0 个答案:

没有答案