我从我的MVC应用程序上传了一个3.5 MB的文件。当我将该文件发送到我的web api端点时,我注意到请求的内容长度是文件大小的两倍(7 MB)。
我用一个5 MB的文件测试了这个理论,当我发送到web api时,内容长度确实足够10 MB。
以下是我将文件发送到web api端点的方法:
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return await client.PostAsync(requestUri, new StringContent(serializedContent, Encoding.Unicode, "application/json"));
}
我在POST方法中从我的MVC控制器调用此方法。为什么我的内容长度加倍?
更新 我应该注意到我正在使用JSON.NET的JsonConvert.SerializeObject方法将包含字节数组的对象转换为字符串
答案 0 :(得分:1)
您正在使用默认情况下使用16位字符的Encoding.Unicode
。如果要节省大约一半的空间,请使用默认使用8位字符的Encoding.UTF8
。注意,不能用8位表示的字符将使用多个字节。