如何使用 fs.readStream 和 fs.writesream 发送和接收视频 ( .mp4 ) 文件 [从客户端到服务器,反之亦然] [在 Node Js 中]?

How to use fs.readStream and fs.writesream to send and recieve Video ( .mp4 ) files [from client to server or vice versa ] [in Node Js]?

   ## Here is my Unsucessfull approach  ##


----------


> Server side code
> Recieve Video stream from client and save it in .mp4 format

var express = require('express');
var app = global.app = exports.app = express();
var fs = require('fs');

app.post('/video_main', (req, res, next) => {
  console.log(req)
  const video_stream = fs.createWriteStream('vde.mp4')
  req.pipe(video_stream)
  //save the video stream to vde.mp4
})


app.use('*', function(req, res, next) {

  return res.status(404).json({
    'status': 'FAILURE',
    'message': 'Not found'
  })

})

app.listen('3000');
// server listening on http://localhost:3000/


----------


> Client side  code
> send video stream to server

const request = require('request')
const fs = require('fs')
var readablestream = fs.createReadStream('SampleVideo_1280x720_1mb.mp4')
const write = fs.createWriteStream('test.mp4');
const r = request.post("http://localhost:3000/video_main");
r.pipe(readablestream);

/*

*/

   

您代码的主要错误在客户端,最后一行应该是

readablestream.pipe(r);

因为您正在将可读流中的数据通过管道传输到请求中。

为了将来参考,您应该始终遵循以下约定:

readstream.pipe(writestream);

I figured this out by analyzing the code on this github, which has pretty nice implementation of file transfer over html:

https://gist.github.com/alepez/9205394