ASP.NET でユーザーをそれぞれのフォルダーに接続するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/125473

質問

ユーザー A がファイルをアップロードすると、そのファイルはフォルダー A にアップロードされ、ユーザー B がアップロードした場合はフォルダー B にアップロードされます。ASP.NET のロール/プロファイル。フォルダーは事前に存在します。誰でも?

役に立ちましたか?

解決

おそらくそれを手動でコーディングしたくなるでしょう。ASP.NET には、ユーザー ファイルを管理するための本質的な機能はありません。ただし、これを行うコードは比較的簡単であるはずです。ユーザー名が一意で変更されないと仮定すると、ユーザー名をパスと組み合わせて (Path.Combine を使用)、その場所にアップロードできます。また、その場所をロックして、他の人がアクセスできないようにします。

他のヒント

私が過去に行った方法は、基本アップロード フォルダー (たとえば、uploads) を使用し、そのフォルダー内に DB からのユーザー ID を使用してフォルダーを作成することでした。したがって、ユーザー ID が 145 のユーザーの構造は ..\uploads\145 になります。

私のコードが最初に行うことは、フォルダーが存在するかどうかを確認し、存在しない場合は、アップロードする前に Directory.Create() (またはその他の構文) を呼び出してフォルダーを作成することです。

さらに役立つ情報:また、同じ名前の 2 つのファイルをアップロードした場合に名前の競合を避けるために、GUID を使用してファイルの名前を変更します。欠点は、通常、元のファイル名と物理 (GUID) ファイル名を含むテーブルを維持する必要があることです。

フォルダーの存在を確認し、存在しない場合はユーザーのためにフォルダーを作成することもできますが、これにはセキュリティ上の影響があります。データをデータベースに保存してユーザーに関連付けることもできます。これは、ユーザーに何をアップロードさせているかによると思います。

これを行うにはいくつかの方法があります。

フォーム認証の使用

フォーム認証を使用する場合は、ユーザーのユーザー名または ID が、ユーザーがファイルをアップロードできるサーバー内のパスの基礎として機能する規則を設定できます。ユーザーはそのフォルダーに直接アクセスできないことに注意してください。ユーザーは Web アプリケーション経由でサーバーからファイルをダウンロードすることもできる必要があります。

Windows 認証の使用

Windows (ActiveDirectory など) 認証を使用する場合、フォルダーの物理的な場所と Web アプリケーション経由の両方へのユーザー アクセスを提供できます。

追伸- マーロン、ここでお会いできて嬉しいです!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top