我正在使用C#在ASP.NET中使用文档管理系统。我将所有文件夹和文件存储在Windows服务器上,并将文件夹和文件信息保存在SQL数据库中。每次,我在服务器上创建一个文件夹或文件,我从数据库中添加唯一ID的名称。示例:contact~432cace7-a39c-4db5-a38f-9efe5d289bbf.pdf
现在我们有不同的用户可以访问相同的文件夹,并且需要根据他们的访问权限进行删除和下载。
示例:我有2个用户,user-1和user-2。我有一个包含2个文件的文件夹-1。 file-1由user-1上传,file-2由user-2上传。现在,当用户1在浏览器页面中查看文件时,我会根据数据库查询显示文件夹-1并在该文件-1中。但是如果用户1选择文件夹-1进行下载,它将转到Windows服务器并下载文件1和文件2,因为它们在服务器上的同一文件夹中。删除的情况也是如此。
我该如何处理这种情况?
基本上,使用关系数据库在SQL中处理很容易,但我在想如何在Windows服务器上有效地完成这项工作?
我的想法:调用一个DB存储过程,它返回id列表,并根据它生成下载zip或删除。但是,由于可以嵌套文件夹和文件,这在性能方面效率如何?
答案 0 :(得分:-1)
请按照以下代码处理:
在Js文件中:
var file_name = response.value[0]["name"];
var downloadurl = response.value[0]"@microsoft.graph.downloadUrl"];
// --------------------------------------------- -------------------------- //
function HandleIT(downloadurl,file_name) {
PageMethods.ProcessIT(downloadurl,file_name, onSucess, onError);
function onSucess(result) {
alert(result);
}
function onError(result) {
alert('Something wrong.');
}
}
在我们的代码中,Webmethod:
[WebMethod]
public static string ProcessIT(string downloadURL, string file_name)
{
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
string path = @"c:\";
string path_n_name = path + file_name;
// Download the Web resource and save it into the current filesystem folder.
myWebClient.DownloadFile(downloadURL, path_n_name);
return "SUCCESS";
}
这是我删除文件的方式
if(fileName != null || fileName != string.empty)
{
if((System.IO.File.Exists(fileName))
System.IO.File.Delete(fileName);
}
希望它适合你......!