node.js - 为什么我的表单数据在 Node.js/Express 中被截断?
问题描述
我正在使用 Node.js/Express 并通过 AJAX 从网页向服务器提交图像。图像已被处理和裁剪,因此我使用生成的 dataURL 并通过这样的发布请求将其发送到我的服务器。dataURL 完全正确且准确,并且包含应有的图像。所以我只是将它发送到服务器。
var fd = new FormData();
fd.append('dataURL',dataURL);
console.log('dataURL length:',dataURL.length);
$.ajax({
type: "POST",
url: `/pwa/update-attachment`,
data: fd,
contentType: false,
processData: false,
success: function(result)
{
}
});
在服务器端没有错误,但 dataURL 参数被截断为 1mb。作为参考,我的服务器设置为使用 bodyparser 接受多部分表单数据,如下所示。我尝试使用 bodyParser 的大小限制(高或低),但在这种情况下似乎都没有生效。
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false })); // support encoded bodies
我收到这样的帖子:
router.post('/update-attachment',(req,res) => {
console.log('dataurl:',req.body.dataURL.length);
...
});
dataURL 被截断为 1048576 字节。非常适合较小的图像。
解决方案
没有错误的原因是它在客户端被浏览器截断。要发送图像,不应将其作为 dataURL 发送,而应作为 blob 发送。以下答案解释了这一点:
推荐阅读
- powershell - Powershell 中的 Vstest.console 和基于结果的操作
- azure-data-factory-2 - Azure 数据工厂 2:如何将文件拆分为多个输出文件
- retrofit - 如何在改造中发送 GET 请求?(它给出错误)
- angular - 使用 ngrx 嵌套 switchMaps 的潜在竞争条件
- pandas - 如何在数据框中添加 n 行(不是单行)?
- java - Tomcat 使用配置设置应用程序上下文(不是战争名称)
- python - Python 随机模块格式化
- python - Python 列表反向函数
- html - 如何将我的网站徽标移到页面上方
- javascript - 将 Font Awesome 图标放在右上角