簡體   English   中英

在 node.js 服務器上接受請求正文中的二進制文件

[英]Accept binary file in body of request on a node.js server

我想在POST的正文中上傳一個二進制文件。

我不想使用multipart/form-data

(據我所知multipart/form-data是一種易於使用的 Web 應用程序技術,但對於移動應用程序來說並不容易。我沒有 Web 應用程序,我只是構建移動應用程序。)

我試過使用 busboy,但在非multipart/form-data上傳中找不到任何內容。 express-fileupload也使用相同的東西 AFAIK。

因此,如果我理解正確,您想創建一個用於將文件上傳到服務器的路由。 一種方法是使用 body-parser express 中間件與寫入流相結合:

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'});
});

發送以下請求會將文件上傳到 [SERVER_UPLOAD_PATH]:

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

上面的示例用於將圖像上傳到服務器,但您可以相應地對其進行修改。 請注意,您需要檢查文件類型以確保用戶只上傳他們應該上傳的文件類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM