【问题标题】:How can I get uploaded file full path in C# 3.0?如何在 C# 3.0 中获取上传文件的完整路径?
【发布时间】:2009-06-20 02:35:11
【问题描述】:

在我的 ASP.NET MVC 网站中,我必须阅读一个 txt 文件,其中包含一些由“;”分隔的名称和电子邮件。之后,我必须将这个 txt 文件的每一行保存到数据库中。

四处搜索,我找到了一些 sn-ps,但在所有这些中我都必须使用 txt 文件路径。

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

谢谢!!

【问题讨论】:

  • 这是针对 ASP.NET 网站的吗?
  • @Jacob - 用户将选择一个 txt 文件,当他点击某个按钮时,将调用一个动作。在这个动作中,我必须读取这个txt文件的所有数据并将它们保存到数据库中。

标签: asp.net-mvc c#-3.0 filestream text-files import


【解决方案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
    }
}

【讨论】:

  • 雅各布,谢谢!我已经朝着这个方向前进了! :-) 它正在保存到数据库中,但现在我遇到了特殊字符问题,例如“´”、“~”等。
  • 我忘记使用编码了!!谢谢你的一切!
【解决方案2】:

如果您使用的是 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

所有属性都列出了其他 appdata 文件夹和内容,但是一旦您获得了可执行文件的应用程序路径,这将为您提供诸如 Application.LocalUserAppDataPath 之类的上下文。

http://msdn.microsoft.com/en-us/library/system.windows.forms.application_properties.aspx

如果内容足够小,您也可以在保存到数据库之前将它们保存在 HashTable 或通用 List<String> 中。

【讨论】:

  • 嗨瑞恩!我真的不需要保存txt文件。我只需要读取它的内容并将其保存到数据库中
【解决方案3】:
var hpf = Request.Files[file] as HttpPostedFile; 

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

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 2014-05-10
    • 1970-01-01
    • 2011-04-17
    • 2013-11-24
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多