如何在ASP.NET MVC3中上载和读取CSV文件

时间:2011-02-21 09:58:03

标签: c# asp.net visual-studio-2010 csv asp.net-mvc-3

我正在处理一个项目,我需要上传一个CSV文件并阅读它。 我正在使用Visual Studio 2010和MVC3以及C#语言。

如果我要使用html fileuplaod控件,我想如何获取上传的文件并在客户端本身读取它而不将文件保存在服务器中。 我必须使用jquery吗? 我搜索过但没有得到满足我要求的解决方案。我是MVC3和CSV文件处理的新手,非常困惑。

*上传.csv文件并将其读取以便将其保存在数据库中的最简单方法是什么。

明确的解决方案将受到高度赞赏。谢谢。

3 个答案:

答案 0 :(得分:4)

您可以做的是将文件保存在服务器上,然后在您从中读取内容后,您可以删除该文件。

我认为你无法从客户端阅读。您必须将其上传到您的服务器上才能阅读。

using (StreamReader CsvReader = new StreamReader(input_file))
                {
                    string inputLine = "";

                    while ((inputLine = CsvReader.ReadLine()) != null)
                    {
                        values.Add(inputLine.Trim().Replace(",", "").Replace(" ", ""));
                    }
                    CsvReader.Close();
                    return values;
                }

答案 1 :(得分:2)

您应该能够在不保存数据的情况下访问数据 - 使用InputStream属性

http://msdn.microsoft.com/en-us/library/system.web.httppostedfile.inputstream.aspx

and this (see Paulius Zaliaduonis answer)

答案 2 :(得分:0)

    private async Task<string> ProcessAsync(string surveyId)
    {           if(!Request.Content.IsMimeMultipartContent())
        {
            return "|UnsupportedMediaType";
        }

        try
        {
            var provider = new MultipartMemoryStreamProvider();

            await Request.Content.LoadIntoBufferAsync().ConfigureAwait(false);
            await Request.Content.ReadAsMultipartAsync(provider).ConfigureAwait(false);

            HttpContent content = provider.Contents.FirstOrDefault();

            if(content != null)
            {
                Stream stream = await content.ReadAsStreamAsync().ConfigureAwait(false);

                using (StreamReader CsvReader = new StreamReader(stream))
                {
                    string inputLine = "";

                    while ((inputLine = CsvReader.ReadLine()) != null)
                    {
                        string[] vars = inputLine.Split(',');


                    }
                    CsvReader.Close();
                    //return values;
                }

            }
        }
        catch(Exception e)
        {
            return e.ToString();
        }

        return "Nothing To Process";
 }