代码之家  ›  专栏  ›  技术社区  ›  SirRupertIII

接受请求体中的二进制文件节点.js服务器

  •  0
  • SirRupertIII  · 技术社区  · 5 年前

    我想上传一个二进制文件在一个 POST .

    我不想使用 multipart/form-data .

    (据我所知 多部分/窗体数据 对于web应用来说是一种易于使用的技术,但对于移动应用来说并不容易。我没有网络应用,我只是在构建移动应用。)

    我试过用巴士男孩,但在非官方网站上找不到任何东西 上传。 express-fileupload

    1 回复  |  直到 5 年前
        1
  •  4
  •   MrfksIV    5 年前

    const bodyparser = require('body-parser');
    const express = require('express');
    const fs = require('fs');
    const app = express();
    
    app.post('/upload/:image', bodyparser.raw({
        limit: '10mb', 
        type: 'image/*'
    }), (req, res) => {
        const image = req.params.image;
        const fd = fs.createWriteStream(`[SERVER_UPLOAD_PATH]/${image}`, {
            flags: "w+",
            encoding: "binary"
        });
        fd.end(req.body);
        fd.on('close', () => res.send({status: 'OK'});
    });
    

    发送以下请求将文件上载到[服务器上载路径]:

    curl -X POST -H 'Content-Type: image/png' --data-binary @[image-path]/image.png http://[server-url]/upload/image.png
    

    上面的示例用于将图像上载到服务器,但您可以相应地修改它。请注意,您需要检查文件类型,以确保用户只上载他们应该上载的文件类型。