我正在使用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,
});
});
};
}