Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpClient PostAsync列表<;字符串>;而不是file.csv_C#_Dotnet Httpclient - Fatal编程技术网

C# HttpClient PostAsync列表<;字符串>;而不是file.csv

C# HttpClient PostAsync列表<;字符串>;而不是file.csv,c#,dotnet-httpclient,C#,Dotnet Httpclient,我正在尝试向供应商发布内容。当我将数据保存到.csv并引用该文件时,数据上传。我更愿意做的是跳过将文件保存到磁盘,只上传数据。我似乎不知道如何正确地序列化数据 以下是数据: csv.Add(string.Join(",", "sara1234", "Ancient World Studies-1201A1-01")); csv.Add(string.Join(",", "jazzy4567", "Ancient World Studies-1201A1-01")); 以下是上传: protec

我正在尝试向供应商发布内容。当我将数据保存到.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;
}

有什么建议吗?

您可以构建CSV字符串并将其传递给StringContent的新实例,而不是使用ByteArrayContent。

您的供应商希望如何接收数据?作为一个
字节[]
?我假设当HttpClient将该文件作为一个文件提取时,它是以字节[]的形式发送的,但我不确定。他们希望我们使用cURL,我们不希望这样做。我知道你不希望这样做,但如果你不符合他们期望的类型,你将看不到上传的数据。如果我引用磁盘上的.csv文件,它将拾取文件并通过HttpClient接受数据。我的假设是数据是一个字节数组。从供应商端我可以看到,jSON缺少行提要。我可以用内存流来做这个吗?
string jsonFile = JsonConvert.SerializeObject(file);
HttpContent contentPost = new StringContent(jsonFile, Encoding.UTF8, "application/json");
content.Add(contentPost, "uploadFile", "student.csv");