C# 删除数据库和磁盘中不在httpRequest中的所有文件

C# 删除数据库和磁盘中不在httpRequest中的所有文件,c#,asp.net-mvc,web-services,httprequest,C#,Asp.net Mvc,Web Services,Httprequest,我有一个httpRequest,它接受例如5个文件并将它们保存到服务器上的一个文件夹中。例如Image1.png、Image2.png、Image3.png。我在另一个函数中使用相同的文件名将它们添加到数据库中,例如我有一个包含Image1.png、Image2.png、Image3.png的列 if (httpRequest.Files.Count > 0) { foreach (string file i

我有一个httpRequest,它接受例如5个文件并将它们保存到服务器上的一个文件夹中。例如Image1.png、Image2.png、Image3.png。我在另一个函数中使用相同的文件名将它们添加到数据库中,例如我有一个包含Image1.png、Image2.png、Image3.png的列

            if (httpRequest.Files.Count > 0)
            {

                foreach (string file in httpRequest.Files)
                {
                    var postedFile = httpRequest.Files[file];
                    string DecodedFile = HttpUtility.UrlDecode(postedFile.FileName.ToString());
                    string fileNameToLower = DecodedFile.ToLower();
                    string fileName = char.ToUpper(fileNameToLower[0]) + fileNameToLower.Substring(1);

                    var folder = HttpContext.Current.Server.MapPath(IMAGEFOLDER);
                    var filePath = Path.Combine(folder, fileName);
                    postedFile.SaveAs(filePath);

                }
            }
如果请求中的文件不是,我希望从服务器和数据库中删除该文件。我在数据库和服务器上都有文件名Image1.png、Image2.png、Image3.png。如果我得到一个带有Image1.png和Image3.png文件的httpRequest(请求中没有Image2.png),我想从服务器和数据库中删除Image2.png


问题是删除请求中不是的内容。相反的情况本来很容易。我需要以某种方式将请求中的文件与数据库中的文件名进行比较。该表中只有图像,因此可以删除请求中没有的所有内容。我可以在每次请求之前清理表,但感觉很愚蠢,因为我的请求非常频繁(每5分钟更新一次文件)。

您需要自己努力解决这个问题。您尝试过什么?为什么不将请求中的文件名添加到列表中,然后根据您的逻辑编写一些sql(如果不存在或存在),并将列表作为字符串数组传递,或者您可以在foreach循环中运行它。。根据您拥有的代码,这听起来并不太难,它是否适用于将文件发布到服务器。。?如果是这样的话,那么处理Sql DB删除的代码在哪里?您说您的请求中有一组图像。这些图像是否通过某种Id进行关联/分组?如果是这样,您可以查询数据库以获取请求Id的所有文件名。相比之下,比较哪些图像不存在很容易,您可以从db/server中删除它们。