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不到 ~ 怎么处理
先码一下,下班答
会不会是body解析的问题
原先我上传东西也有问题
后来换的koa-better-body
使用在这里
@Yuki-Minakami 坐等老铁
@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 谢谢 ! 我用楼上的办法解决了 我迟点对比一下这几个中间件的区别看看
@Sunshine168 说的很好