快速限制上传速度

时间:2020-08-24 20:53:02

标签: javascript file express upload

是否可以限制快递文件的上传速度?

示例:该用户的Internet速度为10Mbp / s,我想限制其后仅上传其1/10的互联网速度。

我试图使用节气门模块,因为这篇帖子说https://stackoverflow.com/a/32340972/13539397,但似乎不起作用。

我的代码:

const Throttle = require("throttle");

route.put("/api/upload", (req, res, next) => {
    req.pipe(new Throttle(1)).pipe(fs.createWriteStream(join(__dirname, "./file.png")));
})

1 个答案:

答案 0 :(得分:0)

改为使用软件包express-throttle-bandwidth

@app.route('/', methods=['GET', 'POST'])
def receive_message():
    global tag, latest_message
    if request.method == 'GET':
        # Before allowing people to message your bot Facebook has implemented a verify token
        # that confirms all requests that your bot receives came from Facebook.
        token_sent = request.args.get("hub.verify_token")
        return verify_fb_token(token_sent)
    # If the request was not GET, it  must be POSTand we can just proceed with sending a message
    # back to user
    else:
            # get whatever message a user sent the bot
        output = request.get_json()
        for event in output['entry']:
            messaging = event['messaging']
            for message in messaging:
                if message.get('message'):
                    # Facebook Messenger ID for user so we know where to send response back to
                    recipient_id = message['sender']['id']
                    typing_payload = json.dumps({"recipient":{"id":recipient_id}, "sender_action":"typing_on"})
                    bot.send_raw(typing_payload)
                    time.sleep(3)
                    if message['message'].get('text'):
                        response_sent_text = send(message['message'].get('text'))
                        send_message(recipient_id, response_sent_text)
                        latest_message = response_sent_text
    return "Message Processed"

由于这会限制实例的连接,因此只能将此实例用于文件上传

您也可以使用express-throttle

var express = require('express')
var throttle = require('express-throttle-bandwidth');
var app = express()
app.use(throttle(100000)); // limits to 100000 bps

app.put("/api/upload", (req, res, next) => {
    req.pipe(fs.createWriteStream(join(__dirname, "./file.png"));
})