gpt4 book ai didi

c# - 处理 File.Open 或 StreamContent

转载 作者:行者123 更新时间:2023-11-30 14:26:16 33 4
gpt4 key购买 nike

下面的 content.Add 行是否会使对象无法正确处理?如果是这样,处理此问题的正确方法是什么。

 public string UploadGameToWebsite(string filename, string url, string method = null)
{
var client = new HttpClient();
var content = new MultipartFormDataContent();
content.Add(new StreamContent(File.Open(filename, FileMode.Open, FileAccess.Read)), "Game", "Game.txt");
var task = client.PutAsync(url, content);
var result = task.Result.ToString();
return result;
}

最佳答案

  1. 如果您要在您的方法中调用异步操作,请将您的方法设为异步。
  2. 配置您的文件流和客户端。在下面的示例中,通过处置 StreamContent,它还处置了底层的 FileStream
  3. 我更喜欢使用 finally block 来处理多个一次性对象,嵌套 using 语句也非常好。
  4. 不确定为什么要在 HttpResponseMessage 上返回 ToString,也许状态代码会更有用,或者查看 StatusCode = 200 并返回 bool 值(真/假) ?

代码:

public async Task<string> UploadGameToWebsiteAsync(string filename, string url, string method = null)
{
HttpClient client = null;
StreamContent fileStream = null;
try
{
client = new HttpClient();
fileStream = new StreamContent(System.IO.File.Open(filename, FileMode.Open, FileAccess.Read))
var content = new MultipartFormDataContent();
content.Add(fileStream, "Game", "Game.txt");
HttpResponseMessage result = await client.PutAsync(url, content);
return result.ToString();
}
finally
{
// c# 6 syntax
client?.Dispose();
fileStream?.Dispose(); // StreamContent also disposes the underlying file stream
}
}

代码版本 #2 使用 using block 。

public async Task<string> UploadGameToWebsiteAsync(string filename, string url, string method = null)
{
using (var client = new HttpClient())
{
using (var fileStream = new StreamContent(System.IO.File.Open(filename, FileMode.Open, FileAccess.Read)))
{
var content = new MultipartFormDataContent();
content.Add(fileStream, "Game", "Game.txt");
HttpResponseMessage result = await client.PutAsync(url, content);
return result.ToString();
}
}
}

关于c# - 处理 File.Open 或 StreamContent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35753081/

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