如何将要打开的文件的路径设置为在托管时打开,而不是依赖于ASP.net上的localhost目录



我正在构建一个处理2个文件(像.txt这样的简单文件(的网站,我正在努力了解如何在最终托管网站时以一种有效的方式编写路径。目前,我使用这行代码只是为了让它在我处理它的时候发挥作用:

File.ReadAllLines(@"C:UserspinkysourcereposPAPPAPfilesfilename.txt");

但当我尝试将其更改为以下代码时:

File.ReadAllLines("/files/filename.txt");

它停止工作。奇怪的是,它只会停止为我更改文件路径的特定页面工作。如果我尝试调试它,它会给出一个错误404,并询问我是否对页面的路径(它是正确的(。我能做些什么来改变这个?

好吧,在你的网站上,你有根目录,然后是一些文件夹。

我们假设文件就是其中一个文件夹。

第1课:

当用户(或您(想要使用URL时,URL当然是

www.mywebsite/Files/dogs.png

因此,请记住,比如在HTML标记、src等中,路径名总是假设为从站点的根开始。

但是,尽管后面有上述代码,但仍将始终使用有效的windows完整路径名作为文件。

因此,您使用一个名为server的内置函数。MapPath

MapPath将采用基于web的url,并转换为完整的内部windows路径名。

所以,你的代码应该是这样的:

string strIntenalFileName = Server.MapPath("/files/data.txt");
string MyText = File.ReadAllText(strIntenalFileName);
TextBox1.Text = MyText;

所以请记住,我们想设置一个图像控件,使其具有来自上方的图片。

好吧,然后我们这样做:

Image1.ImageUrl = "/files/dogs.png";

但是,如果您需要在代码后面读取文件,那么我们必须通过Server放置上面的表达式。MapPath((来翻译代码隐藏。

所以,请记住,当处理web控件、HTML标记时,URL和路径名当然是基于web的。但是,对于代码隐藏直接接口和使用文件,则代码隐藏需要";飞机简;和完整的合法windows路径名。

因此,对于您的示例,将字符串包装在Server中。MapPath("您的基于web的路径位于此处"(。

实际上,你不可能真正知道网络托管服务器的根路径名称,但有了以上内容,你真的不在乎。

然而,人们经常会得到";"一团糟";向上的由于上面的图片,我推了SCR基于网络的url。但是,如果我要读取图片并将图片字节流式传输到web控件,那么我当然会首先转换/获取完整的windows路径名。

以上并不是真的那么令人困惑,但要保持这一点;web url"网络标记";在代码隐藏中直接使用文件仍然是一个非常好的概念,在处理文件时可以在脑海中保持活力。

现在,以上只是一个简单的提示,但我希望它能让我明白

因此:web表达式,markup=来自web根的web路径名称。

代码背后:

仍然必须是一个完整的平面简windows文件名!

因此,在您的情况下,要获得文本文件,我们可以(您应该尝试一下(,键入以下内容:

最新更新