gpt4 book ai didi

node.js - KoaJS 如何从多部分表单数据中获取文件?

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:28 26 4
gpt4 key购买 nike

当我发布多部分表单时,

<form name="acount_manage"  action="/update" enctype="multipart/form-data" method="post">
<input type="file" name="file">
</form>

它抛出:

Error: Unsupported content-type: multipart/form-data
at Object.<anonymous> (e:\...\node_modules\co-body\lib\any.js:51:15)

任何.js:

/**
* Module dependencies.
*/

var json = require('./json');
var form = require('./form');
var text = require('./text');

var JSON_CONTENT_TYPES = [
'application/json',
'application/json-patch+json',
'application/vnd.api+json',
'application/csp-report',
'application/ld+json'

];

/**
* Return a a thunk which parses form and json requests
* depending on the Content-Type.
*
* Pass a node request or an object with `.req`,
* such as a koa Context.
*
* @param {Request} req
* @param {Options} [opts]
* @return {Function}
* @api public
*/

module.exports = function(req, opts){
req = req.req || req;

// parse Content-Type
var type = req.headers['content-type'] || '';
type = type.split(';')[0];

// json
if (~JSON_CONTENT_TYPES.indexOf(type)) return json(req, opts);

// form
if ('application/x-www-form-urlencoded' == type) return form(req, opts);

// text
if ('text/plain' == type) return text(req, opts);

// invalid
return function(done){
var message = type ? 'Unsupported content-type: ' + type : 'Missing content-type';
var err = new Error(message);
err.status = 415;
done(err);
};
};

然后,我改了代码

if ('application/x-www-form-urlencoded' == type) return form(req, opts);

if ('application/x-www-form-urlencoded' == type || 'multipart/form-data'==type) return form(req, opts);

没有错误,但我无法获取请求的数据:

debug(this.request.files.file);

结果未定义。

我正在使用 KoaJs。

最佳答案

对于 koa 2,尝试 async-busboy将请求正文解析为 co-busboy不适用于基于 promise 的异步。

文档中的示例:

import asyncBusboy from 'async-busboy';

// Koa 2 middleware
async function(ctx, next) {
const {files, fields} = await asyncBusboy(ctx.req);

// Make some validation on the fields before upload to S3
if ( checkFiles(fields) ) {
files.map(uploadFilesToS3)
} else {
return 'error';
}
}

关于node.js - KoaJS 如何从多部分表单数据中获取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31651277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com