Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodeJS上传文件_Javascript_Html_Angularjs_Node.js - Fatal编程技术网

Javascript 使用nodeJS上传文件

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,建议

我上传带有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,建议在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"}}