我怎样才能上传C#3.0中文件的完整路径?(How can I get uploaded file

2019-06-23 17:38发布

在我的ASP.NET MVC的网站,我要读一些名字和电子邮件由separeted一个txt文件“;”。 在那之后,我要救这个txt文件到数据库中的每一行。

谷歌搜索的时候,我发现了一些片段,但在所有这些我都用txt文件路径。

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

谢谢!!

Answer 1:

你不能上传文件的完整路径。 这将是侵犯隐私权的行为即上传该文件的用户。

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


Answer 2:

如果你是一个asp.net web页面的模型,然后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>保存到数据库,以及前。



Answer 3:

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

在HTML形式应具有enctype="mulitipart/form-data"



文章来源: How can I get uploaded file full path in C# 3.0?