使用ASP.net计算Folder中的图像

时间:2011-09-16 07:54:52

标签: asp.net-mvc

我想计算文件夹文件夹的图像数量,但会产生此错误:

Could not find a part of the path 'c:\Content\slideshow\images\image\'.

所有图像都在项目的文件夹中。位于Content/slideshow/images/image

这是我的代码:

<%
  string dir = @"/Content/slideshow/images/image";
  string[] files;
  int numFiles;
  files = System.IO.Directory.GetFiles(dir);
  numFiles = files.Length;
  Response.Write("num ber of images :" + numFiles);
%>

5 个答案:

答案 0 :(得分:2)

  

“无法找到路径的一部分   'C:\内容\幻灯片\图像\图像\'“

非常简单地说文件夹不存在。如果要使用相对路径,可以执行以下操作。

Server.MapPath("~/{RelativePathHere})

编辑:回复您的评论。您将需要遍历该文件并检查每个文件的扩展名(保留您自己的计数)

答案 1 :(得分:2)

使用HttpContext.Current.Server.MapPath将虚拟路径映射到物理路径,然后将其传递给Directory.GetFiles方法

答案 2 :(得分:1)

要调用Directory.GetFiles(),您需要将完整路径传递给images目录。

string dirPath = @"~/Content/slideshow/images/image";
string dirFullPath = Server.MapPath(dirPath);
string[] files;
int numFiles;
files = System.IO.Directory.GetFiles(dirFullPath);
numFiles = files.Length;
Response.Write("number of images: " + numFiles);

Server.MapPath返回与dirPath虚拟路径关联的整个物理文件路径。

答案 3 :(得分:1)

您需要将此作为相对路径using Server.MapPath传递 然后我建议使用DirectoryInfo.GetFiles而不是Directory.GetFiles并过滤所需的图像类型,因此不计算非图像文件。这将产生FileInfo[]

<%
  string dir = Server.MapPath(@"/Content/slideshow/images/image");
  FileInfo[] files;
  int numFiles;
  files = (new System.IO.DirectoryInfo(dir)).GetFiles("filePattern");
  numFiles = files.Length;
  Response.Write("num ber of images :" + numFiles);
%>

如果您想要计算多种文件类型,最好的方法就是删除模式然后过滤结果。

  var extensions = new String[] {"jpg", "png", "gif"};
  files = (new System.IO.DirectInfo(dir)).GetFiles();

  foreach(var extension in extensions)
  {
    numFiles += files.AsEnumerable.Where(f => f.Extension.Equals(extension));
  }

答案 4 :(得分:0)

    int numberOfFiles ;
    string path = "C:/PIC";
    numberOfFiles = System.IO.Directory.GetFiles(path).Length;

立即检查