
前提・実現したいこと
C#でhttp通信をするサーバーとクライアントを作成しています。
http通信でクライアントから動画をサーバーに送りたいです。
発生している問題・エラーメッセージ
サーバーで、クライアントから受信したbyte配列をmp4ファイルに変換してもmp4ファイルが壊れてしまっている
該当のソースコード
C#
1var context = listener.GetContext(); 2context.Response.ContentType = "video/mp4"; 3var video = new StreamReader(context.Request.InputStream).ReadToEnd(); //postされたデータをstringに 4byte[] videobytes = Encoding.GetEncoding("shift_jis").GetBytes(video); 5FileStream vidFile = new FileStream(@"C:\Users\ig_ei\OneDrive\Desktop\test.mp4", FileMode.Create); 6BinaryWriter writer = new BinaryWriter(vidFile); 7writer.Write(video); //バイト配列をファイルに書き出し
↑サーバーサイドのコードです。
試したこと
元の動画と壊れてしまっている動画の拡張子をtxtに変えて中身を見たところ構成がとても似ていたので文字化けしてしまっているだけだと思います。サーバーサイドで文字コードを指定する必要があるのでしょうか?

意味不明です。単にクライアントの PC からファイルをサーバーにアップロードできれば良いのですか? サーバー側、クライアント側のアプリは何なのですか? 「該当のソースコード」というのは一体何をするものなのですか?
すみません、情報不足でした
クライアントのpcからサーバーにファイルをアップロードしたいです
その際http通信で転送しようと思うのですが、どうも送られてきたファイルが壊れてしまっているようです。
ソースコードはサーバーサイドのもので、クライアントからpostで送られたデータをbyte配列に変換して最終的にファイルに書き出してます。
C# は知らんけど "shift_jis" とか関係あるのかな?

サーバー側、クライアント側のアプリは何なのですか?

上の意味が分かりますか? 例えば、「サーバー側が ASP.NET Web Forms アプリ、クライアント側が Windows Forms アプリ」といった答えを書いてほしいと言っているのですよ。
クライアント、サーバーどちらも.Net frameworkのコンソールアプリケーションです

> クライアント、サーバーどちらも.Net frameworkのコンソールアプリケーションです
クライアントはコンソールアプリでよくても、サーバー側はコンソールアプリでは全くダメ&問題外です。このまま話を続けても、質問者さんの知識不足で話が通じないと思います。もっと勉強してきてください。
いやいや、コンソールアプリでサーバーを作っても大丈夫ですよ。
「非同期サーバー ソケットの使用」
https://docs.microsoft.com/ja-jp/dotnet/framework/network-programming/using-an-asynchronous-server-socket
サンプルはコンソールアプリです。
ASP.NET で作るより、考えなければいけないことは多いですが、全くダメ&問題外ってことはありません。
HttpListenerクラスを使えば、簡易なHTTPサーバをコンソールアプリで作成できるかと
出来ることは限られるかもしれませんが、問題外ではないでしょう。

自力で http サーバーを実装しているということですか? そうだとしたら「全くダメ&問題外」ということはなかったですね。
失礼しました > 質問者さん
