我正在尝试将内容发布到供应商。将数据保存到.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");
有什么建议吗?
答案 0 :(得分:0)
您可以构建CSV字符串并将其传递给StringContent的新实例,而不是使用ByteArrayContent。