gpt4 book ai didi

c# - 使用多个文件发布 StreamContent

转载 作者:太空狗 更新时间:2023-10-30 01:17:01 27 4
gpt4 key购买 nike

下面的代码片段成功地将单个文件 HttpPosts 到 WebAPI。我想扩展它以构建包含多个文件的 StreamContent(类似于 Fiddler 多文件帖子)。

我知道我应该在 StreamContent 中添加一个“边界”,但我不确定确切的位置。我想最终将 FileStream/Stream 参数转换为列表,以便我可以遍历集合并将 StreamContent 构建为 POST。

让我知道这篇文章是否有意义。如果有任何建议,我将不胜感激。

提前致谢!

public async Task<HttpStatusCode> UploadOrderFile(FileStream imageFileStream, string filename, string contentType = "image/png")
{
JsonApiClient._client.DefaultRequestHeaders.Clear();
var content = new MultipartFormDataContent
{
JsonApiClient.CreateFileContent(imageFileStream, filename, contentType)
};
JsonApiClient._client.DefaultRequestHeaders.Add("Authorization",
" Bearer " + JsonApiClient.Token.AccessToken);
var response = await JsonApiClient._client.PostAsync("api/UploadFile", content);

response.EnsureSuccessStatusCode();
return response.StatusCode;
}

internal static StreamContent CreateFileContent(Stream stream, string fileName, string contentType)
{
var fileContent = new StreamContent(stream);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "\"files\"",
FileName = "\"" + fileName + "\""
};
fileContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);
return fileContent;
}

编辑:我在接收和保存发布的文件时没有任何问题。问题在于创建发布多个文件所需的 StreamContent。

最佳答案

这是我尝试过的适合我的解决方案。 CreateFileContent 中没有任何更改。我只是简单地将参数转换为集合,遍历每个集合,并从多个 StreamContent 中添加新的 MultiPartFormDataContent。边界也被添加到 MultipartFormDataContent 对象中。如果您发现任何低效或明显错误的内容,请告诉我。谢谢!

public async Task<HttpStatusCode> UploadOrderFile(List<FileStream> imageFileStream, List<string> filename, string salesOrderNo, List<string> contentType)
{
JsonApiClient._client.DefaultRequestHeaders.Clear();
var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo);
var content = new MultipartFormDataContent(boundary);
for (var i = 0; i < imageFileStream.Count; i++)
{
content.Add(JsonApiClient.CreateFileContent(imageFileStream[i], filename[i], contentType[i]));
}

JsonApiClient._client.DefaultRequestHeaders.Add("Authorization",
" Bearer " + JsonApiClient.Token.AccessToken);
var response = await JsonApiClient._client.PostAsync("api/UploadFile", content);

response.EnsureSuccessStatusCode();
return response.StatusCode;
}

internal static StreamContent CreateFileContent(Stream stream, string fileName, string contentType)
{
var fileContent = new StreamContent(stream);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "\"files\"",
FileName = "\"" + fileName + "\""
};
fileContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);
return fileContent;
}

关于c# - 使用多个文件发布 StreamContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com