userA がファイルをアップロードすると、そのファイルは folderA にアップロードされ、userB の場合は folderB にアップロードされます。ASP.NET のロール/プロファイル。フォルダは既存のものになります。誰?
4 に答える
あなたはおそらくそれを手作業でコーディングしたいと思うでしょう。ユーザー ファイルを管理するための ASP.NET 固有のものはありません。ただし、そのためのコードは比較的簡単なはずです。ユーザー名が一意であり、変更されないと仮定すると、ユーザー名をパスと組み合わせて (Path.Combine を使用)、その場所にアップロードできます。また、その場所をロックして、他の誰もアクセスできないようにします。
私が過去に行った方法は、ベースアップロードフォルダー(アップロードなど)を使用し、そのフォルダーにDBからのユーザーIDを使用してフォルダーを作成することです。したがって、ユーザー ID が 145 のユーザーの構造は ..\uploads\145 になります。
私のコードが最初に行うことは、フォルダーが存在するかどうかを確認し、存在しない場合は Directory.Create() (または構文が何であれ) を呼び出して、アップロードする前にフォルダーを作成することです。
役立つと思われる詳細情報: GUID を使用してファイルの名前を変更し、同じ名前の 2 つのファイルをアップロードした場合に名前の競合を回避します。欠点は、通常、元のファイル名と物理 (GUID) ファイル名を含むテーブルを維持する必要があることです。
これを行うにはいくつかの方法があります。
フォーム認証の使用
フォーム認証を使用する場合、ユーザーのユーザー名または ID が、ユーザーがファイルをアップロードできるサーバー内のパスの基礎として機能する規則を設定できます。ユーザーはそのフォルダーに直接アクセスできないことに注意してください。ユーザーは、Web アプリケーションを介してサーバーからファイルをダウンロードすることもできます。
Windows 認証の使用
Windows (ActiveDirectory など) 認証を使用すると、フォルダーの物理的な場所と Web アプリケーション経由の両方へのユーザー アクセスを提供できます。
PS - ここでマロンに会えてうれしいです!
フォルダーの存在を確認し、存在しない場合はユーザー用に作成できますが、これにはセキュリティ上の影響があります。また、データベースにデータを保存してユーザーに関連付けることもできます。これは、ユーザーに何をアップロードさせるかによって異なります。