Javascript 使用nodeJS上传文件
我上传带有nodeJS和Angular的文件时遇到问题 我找到了解决方案,但我不知道的只是Ajax。没有它可以吗 通过以下代码,我得到了这个错误:Javascript 使用nodeJS上传文件,javascript,html,angularjs,node.js,Javascript,Html,Angularjs,Node.js,我上传带有nodeJS和Angular的文件时遇到问题 我找到了解决方案,但我不知道的只是Ajax。没有它可以吗 通过以下代码,我得到了这个错误: POST http://localhost:2000/database/sounds 413 (Payload Too Large) 代码: HTML: 编辑: 错误变成了 POST http://localhost:2000/database/sounds 400 (Bad Request) 对于json/urlencoded limit,建议
POST http://localhost:2000/database/sounds 413 (Payload Too Large)
代码:
HTML:
编辑:
错误变成了
POST http://localhost:2000/database/sounds 400 (Bad Request)
对于json/urlencoded limit,建议在server/config.json中进行如下配置:
{
“remoting”: {
“json”: {“limit”: “50mb”},
“urlencoded”: {“limit”: “50mb”, “extended”: true}
}
请注意,环回REST api有自己的带有bodyParser.json/urlencoded中间件的express路由器。添加全局中间件时,它必须在boot()调用之前
如果您使用的是bodyParser
app.use(bodyParser.urlencoded({limit: '100mb',extended: true}));
app.use(bodyParser.json({limit: '100mb'}));
这将允许您上传高达100mb的文件。关于检查数据是否为WAV文件,您最好查看文件的内容并确定它是否为WAV文件 这篇文章详细介绍了格式
为了绝对确保这是一个正确的WAV文件,并且它没有以某种方式被破坏,您需要检查这里定义的所有字段是否都有意义。但一个快速的解决方案可能是检查内容的前四个字节是否为字母“RIFF”。它不会防止损坏的文件或恶意内容,但我认为这是一个很好的起点。我尝试更改发送到url参数的对象,如中所述: 但是我得到了一个错误的请求 为什么没有收到数据?在此之前的console.log显示我的formData中有一个文件 错误:$http:badreq 错误的请求配置
Http request configuration url must be a string or a $sce trusted
object. Received: {"method":"POST","url":"/upload","data":
{},"headers":{"Content-Type":"application/x-www-form-urlencoded"}}
我这样做了,现在错误变成了
POSThttp://localhost:2000/database/sounds 400(错误请求)
问题出在哪里?文件大小是多少?检查您的浏览器网络调用?文件的重量为160556字节,我得到一个意外的标记SyntaxError:unexpected token-at parse(/home/chococo/API/test/node_modules/body parser/lib/types/json.json:83:15)
enctype=“multipart/form data”应该在表单标记中,对吗?我忘了放表单标记,我在输入标记中这么做了。我编辑了问题中的代码。我仍然有同样的问题,即使使用正确的表单标记,环回用于什么?如果我不需要导入大文件,我可以继续使用express吗?嘿,谢谢,我使用了:if(file.type==(“audio/wav”)
来检查数据,效果很好。但是我仍然有一个传递formData对象的问题
{
“remoting”: {
“json”: {“limit”: “50mb”},
“urlencoded”: {“limit”: “50mb”, “extended”: true}
}
var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
//request limit 1gb
app.use(loopback.bodyParser.json({limit: 524288000}));
app.use(loopback.bodyParser.urlencoded({limit: 524288000, extended: true}));
app.use(bodyParser.urlencoded({limit: '100mb',extended: true}));
app.use(bodyParser.json({limit: '100mb'}));
$http.post({
method: 'POST',
url: '/upload',
data: formData,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
}
}).success(function(response){
console.log("Uploaded :");
console.log(response.data);
});
Http request configuration url must be a string or a $sce trusted
object. Received: {"method":"POST","url":"/upload","data":
{},"headers":{"Content-Type":"application/x-www-form-urlencoded"}}