ASP.. NET从服务器获取文件列表

本文关键字:文件 列表 获取 服务器 NET ASP | 更新日期: 2023-09-27 18:10:13

我试图通过ASP.NET从服务器获得文件列表。我有这个代码,它从我的计算机上的一个文件夹获取文件列表,现在我要做的是从一个实际的服务器获取文件,我已经为此搜索了,但发现一切都超级复杂。如果有人能帮助我或给我指出我想做的方向,那就太好了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using FTPProject.Models;
namespace FTPProject.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Title = "Home Page";
            var uploadedFiles = new List<UploadedFile>();
            var files = Directory.GetFiles(Server.MapPath("~/UploadedFiles"));
            foreach (var file in files)
            {
                var fileInfo = new FileInfo(file);
                var uploadedFile = new UploadedFile() { Name = Path.GetFileName(file) };
                uploadedFile.Size = fileInfo.Length;
                uploadedFile.Path = ("~/UploadedFiles/") + Path.GetFileName(file);
                uploadedFiles.Add(uploadedFile);
            }
            return View(uploadedFiles);
        }
    }
}

我已经试过了:

在我的网页。配置:

补充道:

<appSettings>
    <add key="myPath" value="D:'Folder'PDF" />
  </appSettings>

并在控制器中更改:

var myPath = WebConfigurationManager.AppSettings["myPath"];
var files = Directory.GetFiles(Server.MapPath(myPath));

当我运行这段代码,我得到这个错误:

类型为"System.Web"的异常。HttpException'发生在System.Web.dll,但未在用户代码

中处理

附加信息:'D:'Folder'PDF'是一个物理路径,但是a虚拟路径错误

注意:我的应用程序与D:'不在同一台服务器上,但我需要从D:'

ASP.. NET从服务器获取文件列表

获取文件列表

Server.MapPath取虚拟路径,例如:~/Folder/file.ext。所以你不能传递一个物理路径,比如D:'Folder'PDF

访问远程文件系统的语法不同,需要使用UNC文件路径。在你的配置文件中,myPath应该像''servername'd$'Folder'PDF一样,你不需要调用Server.MapPath,你的站点进程正在运行的用户应该是你正在访问的服务器上的管理员。

或者你可以特别地共享文件夹并给你的web服务器运行的帐户权限,然后你不需要管理员权限(这是更安全的)。那么UNC路径就是''servername'sharename

这里有一个引用:Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"'"), Server.MapPath("/")。有什么区别呢?

服务器。MapPath指定映射到物理目录的相对路径或虚拟路径。

Server.MapPath(".")1 returns the current physical directory of the file (e.g. aspx) being executed
Server.MapPath("..") returns the parent directory
Server.MapPath("~") returns the physical path to the root of the application
Server.MapPath("/") returns the physical path to the root of the domain name (is not necessarily the same as the root of the application)

一个例子:

假设你将一个web站点应用程序(http://www.example.com/)指向

C: ' Inetpub ' wwwroot

并在

中安装了您的商店应用程序(子web作为IIS中的虚拟目录,标记为应用程序)

D: ' WebApps '

购物

例如,如果您调用Server。以下请求中的MapPath:

http://www.example.com/shop/products/GetProduct.aspx?id=2342

:

Server.MapPath(".")1 returns D:'WebApps'shop'products
Server.MapPath("..") returns D:'WebApps'shop
Server.MapPath("~") returns D:'WebApps'shop
Server.MapPath("/") returns C:'Inetpub'wwwroot
Server.MapPath("/shop") returns D:'WebApps'shop

如果Path以正斜杠(/)或反斜杠()开头,MapPath方法返回一个路径,就好像Path是一个完整的虚拟路径。

如果Path不以斜杠开头,MapPath方法返回一个相对于正在处理的请求的目录的路径。