C# 如何在ASP.NET MVC3中上载和读取CSV文件
我正在做一个项目,我需要上传一个CSV文件并读取它。 我在Visual Studio 2010、MVC3和C语言中工作 如果我要使用html fileuplaod控件,我将如何获取上传的文件并在客户端本身读取它,而不将文件保存在服务器中。 我必须使用jquery吗? 我已经搜索了,但没有找到满足我要求的解决方案。我是MVC3和CSV文件处理的新手,非常困惑 *上传并读取.csv文件以将其保存在数据库中的最简单方法是什么C# 如何在ASP.NET MVC3中上载和读取CSV文件,c#,asp.net,visual-studio-2010,csv,asp.net-mvc-3,C#,Asp.net,Visual Studio 2010,Csv,Asp.net Mvc 3,我正在做一个项目,我需要上传一个CSV文件并读取它。 我在Visual Studio 2010、MVC3和C语言中工作 如果我要使用html fileuplaod控件,我将如何获取上传的文件并在客户端本身读取它,而不将文件保存在服务器中。 我必须使用jquery吗? 我已经搜索了,但没有找到满足我要求的解决方案。我是MVC3和CSV文件处理的新手,非常困惑 *上传并读取.csv文件以将其保存在数据库中的最简单方法是什么 非常感谢您提供清晰的解决方案。谢谢。您可以将文件保存在服务器上,然后在读取其
非常感谢您提供清晰的解决方案。谢谢。您可以将文件保存在服务器上,然后在读取其中的内容后,可以删除该文件 我认为你不可能从客户端读取这些信息。你必须上传到你的服务器上才能阅读
using (StreamReader CsvReader = new StreamReader(input_file))
{
string inputLine = "";
while ((inputLine = CsvReader.ReadLine()) != null)
{
values.Add(inputLine.Trim().Replace(",", "").Replace(" ", ""));
}
CsvReader.Close();
return values;
}
您应该能够在不保存数据的情况下访问数据-使用InputStream属性
专用异步任务进程异步(字符串调查ID)
{如果(!Request.Content.IsMimeMultipartContent())
{
返回“| UnsupportedMediaType”;
}
尝试
{
var provider=新的MultipartMemoryStreamProvider();
wait Request.Content.LoadIntoBufferAsync().ConfigureWait(false);
wait Request.Content.ReadAsMultipartAsync(提供程序).configurewait(false);
HttpContent=provider.Contents.FirstOrDefault();
如果(内容!=null)
{
Stream=await content.ReadAsStreamAsync().ConfigureAwait(false);
使用(StreamReader CsvReader=新StreamReader(stream))
{
字符串inputLine=“”;
而((inputLine=CsvReader.ReadLine())!=null)
{
string[]vars=inputLine.Split(',');
}
CsvReader.Close();
//返回值;
}
}
}
捕获(例外e)
{
返回e.ToString();
}
返回“无需处理”;
}
您能解释一下为什么不想将文件保存在服务器上吗?如果您这样做,加载CSV文件非常容易,例如,我希望在客户端本身读取文件,提取数据并将数据保存到数据库中。我无法将文件保存在服务器中,因为这样我将保存大量文件。是否有任何选项??将文件保存在服务器上的临时目录中(确保文件名唯一),将其读入数据库,删除文件…是否有好的jquery pulgin将文件作为流读取并发送到服务器??有人能帮我解决这个问题吗???@sunshine-请开始新的问题。
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";
}