Kal*_*Kal 4 reactjs next.js vercel
我正在尝试将文件发送到下一个 js 应用程序中的 api。图像将上传到cloudinary:
调用api的函数为:
async uploadButtonClicked(imageUpload) {
const formData = new FormData();
//formData.append('test', "testing");
formData.append('postPic', imageUpload.files[0]);
const res = await fetch('/api/hello', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
},
body: formData,
})
Run Code Online (Sandbox Code Playgroud)
console.log(imageUpload.files[0])前端给了我下面的值,看起来不错。

在 API 中,
export default (upload.single('postPic'), async (req, res) => {
console.log(req.body)
Run Code Online (Sandbox Code Playgroud)
上面是undefined我使用时的情况
export const config = {
api: {
bodyParser: false,
},
};
Run Code Online (Sandbox Code Playgroud)
当我删除 bodyParser 设置(bodyParser 为 true)时,数据作为流,对上传没有用处。我收到上传错误,如下所示:

如果正文到达以下格式的 api,Cloudinary 将上传:

应该改变什么才能让主体(基本上是一个图像文件)以正确的格式到达 api,如上所示?
我认为这个问题也可以问为:为什么req.body undefined使用时bodyParser: false?
小智 6
我遇到了同样的错误,但 Formidable 对我有用。尝试先将图像放入表单数据中。
来自客户:
export const uploadImage = async (image) => {
const formData = new FormData();
formData.append('image', image);
const response = await axios.post('/api/v1/image', formData);
return response.data;
}
Run Code Online (Sandbox Code Playgroud)
以下是服务器 API:/api/v1/image
import formidable from 'formidable';
export const config = {
api: {
bodyParser: false,
},
}
export default async (req, res) => {
const form = new formidable.IncomingForm();
form.uploadDir = "./";
form.keepExtensions = true;
form.parse(req, (err, fields, files) => {
console.log(err, fields, files);
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18436 次 |
| 最近记录: |