Вот мой вызов ajax:
$.ajax({
type: "POST",
url: "/api/excels/Upload",
data: $file,
contentType: false,
processData: false
}).done(function (result) {
alert(result);
}).fail(function (a, b, c) {
console.log(a, b, c);
});
return false;// if it's a link to prevent post
});
Вот моя функция контроллера Web APi:
[HttpPost]
public async Task<string> Upload()
{
FilePath filePath = "HOW SHOULD I GET THE FILE???";
FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = null;
//Check file type
if (filePath.EndsWith(".xls"))
{
excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
}
else if (filePath.EndsWith(".xlsx"))
{
excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
var result = excelReader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
{
UseHeaderRow = true
}
});
String sheetName = result.Tables[0].TableName;
}
Как видите, я использую ExcelReader, чтобы получить файл и проанализировать его, чтобы прочитать его содержимое. Моя конечная цель - прочитать каждую строку и сохранить каждую строку в БД, используя Entity Framework. Я не могу использовать форму для доступа к файлу, потому что это веб-API. Буду признателен за вашу помощь.