c# - MultipartFormDataContent 不适用于大于约 22 字节的文件
问题描述
我正在尝试使用 MultipartFormDataContent 将文件上传到服务器,但由于某种原因,它适用于非常小的文件,如“22 字节”,但不是更大。所以它适用于非常小的文本文件,但不适用于图像或视频。
这是男女同校:
static Encoding ISO_8859_1 { get { return Encoding.GetEncoding("ISO-8859-1"); } }
public static void UploadFile(string _uploadEndPoint, string _fileToUpload, string userName, string password)
{
using (HttpClient httpClient = new HttpClient())
{
string _auth = string.Format("{0}:{1}", userName, password);
string _enc = Convert.ToBase64String(ISO_8859_1.GetBytes(_auth));
string _cred = string.Format("{0} {1}", "Basic", _enc);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _enc);
httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("text/html"));
httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/xhtml+xml"));
httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/xml;q=0.9"));
httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("image/webp"));
httpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("*/*;q=0.8"));
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("user-agent");
httpClient.DefaultRequestHeaders.Upgrade.ParseAdd("1");
using (MultipartFormDataContent content = new MultipartFormDataContent())
{
using (FileStream stream = File.Open(_fileToUpload, FileMode.Open, FileAccess.Read))
{
using (StreamContent streamConent = CreateFileContent(stream, _fileToUpload.Split('\\').Last(), "application/octet-stream"))
{
content.Add(new StringContent("upload"), "submit");
content.Add(new StringContent(""), "directory");
content.Add(new StringContent(_fileToUpload.Split('\\').Last()), "filename");
content.Add(new StringContent("as_json"), "options");
content.Add(streamConent);
var taskUpload = httpClient.PostAsync(_uploadEndPoint, content);
taskUpload.Wait();
if (taskUpload.Status == TaskStatus.RanToCompletion)
{
Console.WriteLine("File uploaded");
Console.WriteLine(taskUpload.Result.ToString());
}
}
}
}
}
}
private static StreamContent CreateFileContent(Stream stream, string fileName, string contentType)
{
var fileContent = new StreamContent(stream, 4 * 1024);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "\"file\"",
FileName = "\"" + fileName + "\""
};
fileContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);
return fileContent;
}
解决方案
推荐阅读
- javascript - 在网络上监听数据 - React Native App and Server
- c# - 将文本添加到特定的 TableLayoutPanel 单元格,然后从表格中制作图像
- r - r markdown inline equation 换行问题
- activemq - ActiveMQ - 如何忽略未传递的消息
- arm - L2 Cache Miss 是否等同于 ARMv7 A15 上的“L2 Data Cache Refill”?
- r - Rstudio 不会加载 Rcmdr
- javascript - 从文件夹导入 webpack 排除不必要的模块
- c# - 为什么第一个插入在 Cassandra 中胜过第二个插入?
- awk - awk 行到多列
- c++ - C++中的向量初始化