2009-06-20 71 views
0

在我的ASP.NET MVC网站中,我必须阅读一个txt文件,其中包含一些姓名和电子邮件,由';'分隔。之后,我必须将此txt文件的每一行保存到数据库中。如何在C#3.0中获取上传的文件完整路径?

谷歌搜索,我发现了一些片段,但在所有他们我必须使用txt文件路径。

但是,我怎么能得到这条路?这个文件可以在用户机器的任何地方!

谢谢!

+0

这是一个ASP.NET网站? – heavyd 2009-06-20 02:39:01

+0

ASP.NET MVC,heavyd。 – AndreMiranda 2009-06-20 02:42:36

+0

@Jacob - 用户将选择一个txt文件,当他点击某个按钮时,将会调用一个Action。在此操作中,我必须读取此txt文件的所有数据并将它们保存到数据库。 – AndreMiranda 2009-06-20 02:47:05

回答

4

您无法获取上传文件的完整路径。这将是上传文件的用户的隐私违规行为。

相反,您需要阅读已上传的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 
    } 
} 
1

如果你在一个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>保存到数据库,以及前。

0
var hpf = Request.Files[file] as HttpPostedFile; 

在HTML表单应该有enctype="mulitipart/form-data"

相关问题