Я пытаюсь опубликовать контент для поставщика. Загрузка данных, когда я сохраняю свои данные в.csv, затем ссылается на файл. То, что я бы предпочел сделать, это пропустить сохранение файла на диск и просто загрузить данные. Я не могу понять, как правильно сериализовать данные.
Вот данные:
csv.Add(string.Join(",", "sara1234", "Ancient World Studies-1201A1-01"));
csv.Add(string.Join(",", "jazzy4567", "Ancient World Studies-1201A1-01"));
Вот выгрузка:
protected async Task<bool> RunAsync(string baseAddress, IEnumerable<string> file, string passkey)
{
byte[] csvBytes = File.ReadAllBytes("C:\\Projects\\AutomationServiceFiles\\DataMig_Test\\Drop\\Hapara\\HaparaStudent.csv");
var csvContent = new ByteArrayContent(csvBytes);
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
content.Add(new StringContent(passkey), "passkey");
content.Add(csvContent, "uploadFile", "student.csv");
var response = await client.PostAsync(baseAddress, content);
response.EnsureSuccessStatusCode();
string returnedContent = await response.Content.ReadAsStringAsync();
}
}
return true;
}
Я попробовал то, что показано ниже (вместо файла с диска). Я получаю сообщение об успешности 200, но данные не загружаются. В частности, первый метод возвращает сообщение о том, что ученики не были найдены (это хорошо, потому что я знаю, что данные были оценены), второй не возвращает никакого сообщения вообще.
string jsonFile = JsonConvert.SerializeObject(file);
HttpContent contentPost = new StringContent(jsonFile, Encoding.UTF8, "application/json");
content.Add(contentPost, "uploadFile", "student.csv");
Какие-либо предложения?
Вы можете просто построить CSV-строку и передать ее в новый экземпляр StringContent вместо использования ByteArrayContent.
byte[]
?