如何将MultipartFormDataContent保存到file.txt?现有代码无法正常运行
解决MultipartFormDataContent保存到文件的问题
你的代码核心问题是直接将MultipartFormDataContent的子项(HttpContent对象)写入文件,这只会输出对象的类型名称,而非实际内容。另外代码还存在异步方法使用不当、资源未正确释放的问题,以下是修正方案:
修正要点
- 将
async void改为async Task,避免异步操作引发的潜在问题 - 读取
HttpContent的实际内容(文本或二进制) - 使用
using语句自动释放文件流和HttpContent资源 - 避免手动创建文件后未释放流的问题
完整修正代码
MultipartFormDataContent content2 = new MultipartFormDataContent(); private async Task SavePhotosAsync() { string testPath = Path.Combine(Android.App.Application.Context.GetExternalFilesDir("").AbsolutePath, "file.txt"); // 使用using自动管理StreamWriter资源 using (var tw = new StreamWriter(testPath, false)) { foreach (var contentItem in content2) { // 读取文本内容(如果是二进制文件,改用ReadAsByteArrayAsync并写入字节) string content = await contentItem.ReadAsStringAsync(); // 写入内容,添加分隔符区分不同项 await tw.WriteLineAsync($"--- 内容项分割线 ---"); await tw.WriteLineAsync(content); // 释放子项资源 contentItem.Dispose(); } } await Shell.Current.GoToAsync($"//{nameof(HomePage)}"); }
额外说明
如果content2中包含二进制内容(比如图片文件),直接写入文本会导致乱码,此时需要单独处理:
// 处理二进制内容示例 byte[] binaryContent = await contentItem.ReadAsByteArrayAsync(); // 转换为Base64后写入文本文件,或写入单独的二进制文件 string base64Content = Convert.ToBase64String(binaryContent); await tw.WriteLineAsync(base64Content);
内容的提问来源于stack exchange,提问作者F205
相关产品推荐
相关产品推荐

