Select 已按键上传文件

Select uploaded files by key

在 ASP.NET 应用程序中,我想处理上传的文件。 HttpContext.Current.Request.Files.AllKeys 包含以下内容:

[0]File2    
[1]File2    
[2]flTeklif    
[3]flTeklif    
[4]flTeklif    
[5]flTeklif

我如何才能 select 仅将具有密钥 flTeklif 的上传文件放入 List<HttpPostedFile>

我试过这个:

var uploads = HttpContext.Current.Request.Files.AllKeys
                         .Where(s=>s.stringname == "flTeklif") 

但这只是 select 密钥,而不是文件。我怎样才能 select Files.Where(key == "flTeklif")?

HttpRequest.Files is an HttpFileCollection, whose AllKeys property是一个字符串数组。

所以你可以直接使用 AllKeys.Where(s => s == "flTeklif").

到目前为止,对于你的问题的字面解释,这可能就是为什么你非常沮丧和反对的原因,因为它没有任何意义。

如果您的实际问题是 "How can I select the files that have flTeklif as their key",请使用:

var files = HttpContext.Current.Request.Files;
var result = new List<HttpPostedFile>();

for (int i = 0; i < files.AllKeys.Count; i++)
{
    if (files.AllKeys[i] == "flTeklif")
    {
        result.Add(files.AllKeys[i]);
    }
}

然后 result 将包含您感兴趣的文件。

好的,我明白了。可能是

HttpContext.Current.Request.Files.Cast<HttpPostedFile>().Where(c => c.FileName.Contains("flTeklif")).ToList();

使用HttpFileCollection.GetKey(Int32)方法。没有提到 AllKeys 数组顺序与文件 HttpFileCollection.

相似
 int i;
 HttpFileCollection MyFileColl = Request.Files;

 for( i= 0; i< MyFileColl.Count; i++)
 {
    if( MyFileColl.GetKey(i) == "flTeklif")
    {
       //...
    }
 }

您可以使用以下代码获取针对特定密钥的所有已上传文件的列表

HttpFileCollection files = null;
try { files = HttpContext.Current.Request.Files; } catch { }
var allUploadedFilesAgainstThisKey = files.GetMultiple(singleKey);      // singleKey is a string
        // allUploadedFilesAgainstThisKey is of type IList<HttpPostedFile>