Я использую AJAX File Uploader от Valum для загрузки файла csv. Код для его инициализации:
$(document).ready(function () {
var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader'),
// path to server-side upload script
action: 'handlers/PhoneNumberListHandler.ashx',
buttonTitle: 'Upload Document',
buttonText: ' Upload',
allowedExtensions: ['csv'],
sizeLimit: 1024000, // max size
});
});
<div id="file-uploader"></div>
В классе обработчика c # я написал следующий код:
HttpRequest request = context.Request;
byte[] buffer = new byte[request.ContentLength];
Stream inputStream;
string fileName;
inputStream = request.InputStream;
fileName = request["qqfile"];
using (var reader = new StreamReader(inputStream))
{
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';'); // gives some abstract characters
}
}
Мой CSV-файл содержит три столбца: «Телефон», «Имя», «Фамилия», где первый столбец является обязательным, а остальные необязательными.
Я застрял, потому что не могу прочитать файл .csv. Может кто-нибудь, пожалуйста, помогите мне и предложите, как я могу прочитать содержимое файла CSV из потока или есть ли другой способ сделать это? Я хочу извлечь содержимое CSV и сохранить каждую строку отдельно в таблице базы данных.
Обновление:
Я внес изменения в сохранение CSV-файла, и теперь содержимое выглядит так:
PhoneNumber, FirstName, LastName
11111, Taj, Mahal
22222, Оберай,
33333,, Лейк Палас
44444 ,,
Изменен вышеуказанный код:
using (var reader = new StreamReader(inputStream))
{
List<string> listA = new List<string>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(';');
listA.Add(values[0]);
}
}
Я хочу получить индивидуальное значение столбцов, и здесь я получаю полную строку в одной строке. Чтобы получить индивидуальное значение, мне нужно разделить его на «,» и получить значения. Я хочу знать, есть ли лучший способ сделать это?