在我的ASP.NET MVC网站中,我必须阅读一个txt文件,其中包含一些姓名和电子邮件,由';'分隔。之后,我必须将此txt文件的每一行保存到数据库中。如何在C#3.0中获取上传的文件完整路径?
谷歌搜索,我发现了一些片段,但在所有他们我必须使用txt文件路径。
但是,我怎么能得到这条路?这个文件可以在用户机器的任何地方!
谢谢!
在我的ASP.NET MVC网站中,我必须阅读一个txt文件,其中包含一些姓名和电子邮件,由';'分隔。之后,我必须将此txt文件的每一行保存到数据库中。如何在C#3.0中获取上传的文件完整路径?
谷歌搜索,我发现了一些片段,但在所有他们我必须使用txt文件路径。
但是,我怎么能得到这条路?这个文件可以在用户机器的任何地方!
谢谢!
您无法获取上传文件的完整路径。这将是上传文件的用户的隐私违规行为。
相反,您需要阅读已上传的Request.Files。例如:
HttpPostedFile file = Request.Files[0];
using (StreamReader reader = new StreamReader(file.InputStream))
{
while ((string line = reader.ReadLine()) != null)
{
string[] addresses = line.Split(';');
// Do stuff with the addresses
}
}
如果你在一个asp.net网页模型,然后Server.MapPath("~/")
工程得到的网站的根,所以通过你需要的路径。您可能需要调用
HttpContext.Current.Server.MapPath("~/");
例如在文本文件被保存在一个文件夹:
string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");
要只是从它读一旦你拥有了它,你可以的StreamReader它:
string directoryOfTexts = HttpContext.Current.Server.MapPath("~/txtdata/");
string path = directoryOfTexts + "myfile.txt";
string alltextinfile = "";
if (File.Exists(path))
{
using (StreamReader sr = new StreamReader(path))
{
//This allows you to do one Read operation.
alltextinfile = sr.ReadToEnd());
}
}
如果这是桌面应用程序,则Applcation类具有所有此信息:
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx
Application.StartupPath
所有属性列出其他应用程序数据文件夹和东西,但一旦你的应用程序可执行文件的路径这给你背景下,如Application.LocalUserAppDataPath
。
http://msdn.microsoft.com/en-us/library/system.windows.forms.application_properties.aspx
如果内容足够小,你也可以只将它们保存在一个HashTable
或通用List<String>
保存到数据库,以及前。
var hpf = Request.Files[file] as HttpPostedFile;
在HTML表单应该有enctype="mulitipart/form-data"
这是一个ASP.NET网站? – heavyd 2009-06-20 02:39:01
ASP.NET MVC,heavyd。 – AndreMiranda 2009-06-20 02:42:36
@Jacob - 用户将选择一个txt文件,当他点击某个按钮时,将会调用一个Action。在此操作中,我必须读取此txt文件的所有数据并将它们保存到数据库。 – AndreMiranda 2009-06-20 02:47:05