このようなxmlファイルを使用して、ファイルにアクセスできるユーザー/グループを設定します
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ELEMENT file ANY>
<!ATTLIST file name ID #REQUIRED>
]>
<root>
<file name="file.doc" users="155,321" groups="grp5" />
<file name="file2.doc" users="321" groups="" />
</root>
ファイルは http ルートの上に保存されるため、URL からアクセスすることはできません。
ユーザーが GetFile.aspx?file=file.doc にアクセスしようとすると、XML を読み込み、次の行を取得します
XmlNode xnFile= XML.GetElementById(wantedFile);
、次に関数を呼び出します
HasAccess(Context.User, xnFile);
ユーザーがログインしているかどうかを確認し、アクセス許可を比較します。このユーザーがファイルを持っていても問題ない場合は、ディスクからファイルを読み取り、
FileInfo thisFile = new FileInfo(secretLocation + wantedFile);
Response.Clear();
Response.Buffer = false;
Response.BufferOutput = false;
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Length", thisFile.Length.ToString());
Response.AddHeader("Content-disposition", "filename=" + thisFile.Name);
Response.ContentType = "application/none";
Response.WriteFile(secretLocation + wantedFile);
Response.Close();
Response.End();
Response.ClearContent();
Response.ClearHeaders();
実際、現在私は 1,000 を超えるファイルを所有しており、おそらくクラッシュまたは同時使用が原因で、XML が 5 年間で 2 回破損したため、ファイル データをデータベースに書き込むことを考えています。