【发布时间】:2021-07-04 06:44:04
【问题描述】:
我的这部分 C# 代码可以与另一个我无权访问其源代码的 NodeJS Express 应用程序正常工作,我想保留此代码。
string filetoupload = @"D:\testvideo.mp4";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://127.0.0.1:10090" + "/upload?name=" + WebUtility.UrlEncode(Path.GetFileName(filetoupload)));
request.Method = "PUT";
request.ContentType = MimeTypesMap.GetMimeType(Path.GetExtension(filetoupload));
using (FileStream fs = File.OpenRead(filetoupload))
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
request.ContentLength = buffer.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Flush();
requestStream.Close();
WebResponse upresponse = request.GetResponse();
Stream updataStream = upresponse.GetResponseStream();
StreamReader upreader = new StreamReader(updataStream);
string upres = upreader.ReadToEnd();
Console.WriteLine("RES: " + upres);
}
问题是我不知道如何在 NodeJS Express 端正确读取流数据。我已经设法阅读它并使用此代码将文件存储在磁盘上
const express = require('express');
const fs = require('fs');
const app = express();
const port = process.env.PORT || 10090;
app.listen(port, () =>
console.log(`App is listening on port ${port}.`)
);
app.put('/upload', async (req, res) => {
try {
var socket = req.socket;
socket.on('data', function(data) {
fs.appendFile("somevideo.mp4", new Buffer(data), function (err,data) {
if (err) {
res.status(500).send(err);
}
});
});
res.send({
status: true,
message: 'File uploaded'
});
} catch (err) {
res.status(500).send(err);
}
});
但是在文件存储在磁盘上之后我需要做更多的工作(创建哈希码,做一些 MySQL 工作等),然后返回一些文本数据作为响应消息。我的问题是如何知道什么时候发生的?
还有其他(正确的)方式来存储像这样上传的文件吗?
【问题讨论】:
标签: c# node.js express file-upload