我用C#在.NET中构建一个小型网站。用户必须上传已经实现的Excel文件,扩展名.xls或.xlsx。虽然我实际上无法从Excel文件中读取值。我现在写了这段代码:
public ActionResult Index(HttpPostedFileBase file)
{
string fileName = Path.GetFileName(file.FileName);
if (fileName.EndsWith(".xlsx") || (fileName.EndsWith(".xls")))
{
// store the file inside ~/App_Data/uploads folder
string path = Path.Combine(Server.MapPath("~/App_Data/uploads/"), fileName);
file.SaveAs(path);
// Get file info
int contentLength = file.ContentLength;
string contentType = file.ContentType;
// Get file data
byte[] data = new byte[] { };
using (var binaryReader = new BinaryReader(file.InputStream))
{
data = binaryReader.ReadBytes(file.ContentLength);
}
using (FileStream fs = File.Open(path, FileMode.OpenOrCreate))
{
UTF8Encoding temp = new UTF8Encoding(true);
while (fs.Read(data, 0, data.Length) > 0)
{
//Console.WriteLine(temp.GetString(b));
}
}
// redirect back to the index action to show the form once again
return RedirectToAction("Index");
}
现在我猜测代码不好,但我在第二次使用行时遇到错误,在' File.Open(...)'
'System.Web.Mvc.Controller.File(byte[], string)' is a 'method', which is not valid in the given context C:\Users\.....cs
我在线阅读了无数的例子,但似乎没有一个类似的问题:/如果有人能解决这个错误或帮助我解决这个问题,我们将不胜感激!它可能是小事/傻事。
答案 0 :(得分:5)
您的控制器类继承自System.Web.Mvc.Controller,它在基类上有一个名为File的方法。您需要在使用中明确使用正确的语句:
using (FileStream fs = System.IO.File.Open(path, FileMode.OpenOrCreate))