Skip to content

MS_UploadAndDownload

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

アップロード・ダウンロード

概要

補足(本ページはハブである): 原文は概要が空欄で、
2 つの子ページへのリンクだけを持つ目次ページである。

アップロード・ダウンロード(本ページ)
  ├ アップロードのいろいろ … 受け取る側の話
  └ ダウンロードのいろいろ … 返す側の話

なぜこの 2 つを分けて扱うのか——
課題がまったく異なるためである。

アップロード ダウンロード
主な関心 受け取ったものを信用しない 正しく届ける・見せる
代表的な脅威 不正ファイルの実行、容量枯渇、パス トラバーサル 情報漏洩(他人のファイルが取れる)
技術的な難所 サイズ制限、タイムアウト、進捗表示 ファイル名の文字化け、Content-Type、レジューム
性能の壁 メモリに載せてしまう実装 同期 I/O でスレッドを塞ぐ

共通する現在の指針を先に挙げておく。

① 【Web アプリのプロセスを経由させない】
     → 大きなファイルはオブジェクト ストレージへ直接やり取りする
       (SAS URL / 署名付き URL)
     → アプリは【URL を発行するだけ】

② 【ストリームで扱う】(byte[] に読み切らない)
     → メモリ使用量がファイル サイズに比例しない

③ 【ファイル名を信用しない】
     → 保存名はサーバ側で決める(GUID 等)
     → 元のファイル名はメタデータとして DB に持つ

④ 【非同期 API を使う】
     → I/O 待ちでスレッドを占有しない([async/await](MS_AsyncAwait))

① が最も効果が大きい。
アプリ サーバを経由させないことで、
帯域・メモリ・タイムアウトの問題がまとめて消える

詳細

参考

Microsoft Learn


Tags: 移行, その他、開発の色々

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally