[英]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.