gpt4 book ai didi

node.js - 如何获得对 http 请求文件上传中止的响应?

转载 作者:可可西里 更新时间:2023-11-01 16:43:59 25 4
gpt4 key购买 nike

我将使用 nodejsexpress 上传文件。

我看到 bodyParser 完成了工作...

app.use(express.bodyParser({"limit": '2mb'}));

但是如果我想限制请求的大小,我发现它不会以某种方式取消上传。客户端一直在发送数据。

所以我写了这个中间件:

app.use(function (err, req, res, next) {

if(err.status == 413){
req.destroy();
return res.json({
"status": 413,
"message": err
},413);
}else
next(err);
});

有效,取消上传但客户端没有得到(或忽略)响应!

我认为这可能是 http 协议(protocol)的行为,因此我们将不胜感激。

最佳答案

我认为您的代码应该可以工作,但不要破坏请求!只需从您的代码中删除 req.destroy(); 行。你也可以尝试这样的事情(它在我这边工作)为了不使用中间件:

express = require 'express'
app = express()
swig = require 'swig'
cons = require 'consolidate'
swig.init {
root: __dirname + '/views'
allowErrors: true
}
app.set 'views', __dirname + '/views'
app.set 'view options', {layout: false}
app.engine '.html', cons.swig
app.set 'view engine', 'html'

# set upload dir
app.use express.bodyParser {uploadDir: './upload'}

app.get '/', (req, res) ->
res.render 'index.html', {}

app.post '/file-upload', (req, res) ->
# you can get some info about files here (size, path, name, type)
console.log req.files
# check that size is good
if req.files.thumbnail.size > 200
res.send 413
else
res.send 'Uploaded!'

console.log 'listen port 3000'
app.listen 3000

在形式上:

<form method="post" enctype="multipart/form-data" action="/file-upload">
<input type="file" name="thumbnail">
<input type="submit">
</form>

Look here了解详情。希望这对您有所帮助。

关于node.js - 如何获得对 http 请求文件上传中止的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14160323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com