求助 koa2如何获取FormData - CNode技术社区

求助 koa2如何获取FormData
发布于 9 年前 作者 Sunshine168 15854 次浏览 来自 问答

RT 前端页面将一个base64放在FormData中提交


 function base64_uploading(base64Data){
 var data = new FormData();
 data.append('pic', base64Data);
 $.ajax({
 type: 'POST',
 url: "../api/upload",
 cache: false,
 data: data,
 processData: false,
 contentType: false,
 timeout: 50000,
 success: function(data){
 console.log(data);
 
 },
 complete:function() {
 $("#upload").prop('disabled',false)
 },
 error: function(xhr, type){
 alert('上传超时啦,再试试');
 
 }
 });
}

目前尝试 koa-bodyparser 不解析 application/x-www-form-urlencoded koa-body 报错 是我传输的方式有问题吗 有看到过https://cnodejs.org/topic/4f939c84407edba2143c12f7 帖子里 可以直接处理的话 应该post过去的base64内容大小应该是比较小的有看到评论中狼叔说用上传。。 但是get不到 ~ 怎么处理

11 回复

先码一下,下班答

会不会是body解析的问题 原先我上传东西也有问题 后来换的koa-better-body 使用在这里

@hezhongfeng 我用过一下koa-better-body 也报错了 不过我那没写options 我印象中有个options限制大小的 但是报错里面没有看出和这个有关 ~我去看看你怎么写的

老铁我下班了... 这个问题之前遇到过,FormData坑爹在于没办法通过ctx.req.body拿到 我当时试了很多方法,最后用了formidable才解决问题 Node代码


	const Koa = require("koa");
	const router = require("koa-router")();
	const formidable = require("formidable");
	const app = new Koa();
	app.use(router.routes());
	router.get("/index",(ctx)=>{
 	ctx.body = require("fs").readFileSync("./index.html","utf-8");
	})
	router.post('/base64', async (ctx, next) => {
 	var form = new formidable.IncomingForm();
 	form.parse(ctx.req,async function(err,fields,files){
 	if(err){throw err; return;}
 	console.log(fields);//{ name: base64字符串 }
 	});
 	ctx.body = "end"
	
	});
	app.listen(3000);

html

 	var base64Data =" eeMAIAAAAAAAAAAAAAAAAwC4tYlrOBhwFqQAJggg..........==";
 function base64_uploading() {
 var data = new FormData();
 data.append('name', base64Data);
 $.ajax({
 type: 'POST',
 url: "/base64",
 cache: false,
 data: data,
 processData: false,
 contentType: false,
 timeout: 50000,
 success: function(data){
 console.log(data);
 },
 complete:function() {
 //$("#upload").prop('disabled',false)
 },
 error: function(xhr, type){
 alert('上传超时啦,再试试');
 }
 });
 }

https://github.com/Yuki-Minakami/Koa2-FormData 再贴个链接,这是上面的DEMO, 其他的项目要是能给个star就更好啦~(≧▽≦)/~

@Yuki-Minakami !已star 可以了 非常感谢啊

koa-body 用这个。 const koaBody = require(‘koa-body’); koaBody({multipart: true})

@jizhuofeng 谢谢 ! 我用楼上的办法解决了 我迟点对比一下这几个中间件的区别看看

回到顶部

AltStyle によって変換されたページ (->オリジナル) /