使用 HttpClient 上传文件
Upload file using HttpClient
我需要通过 api 从客户端向服务器上传任何文件视频、图像和文档
此代码适用于我,但适用于小于 2MB 的文件
我无法下载最大 10 , 20MB 的文件
我尝试更改代码和样式
我也把它转换成一个byte[]并拆分成几个文件,但是没有用
请帮忙
此客户代码
uri = new Uri(WebAPIUrl + "setimg/");
try
{
var content = new MultipartFormDataContent();
if(mediafile!=null)
{
var streamContent = new StreamContent(mediafile);
streamContent.Headers.Add("Content-Type", "application/octet-stream");
content.Add(streamContent, "\"img\"", $"\"{mediafile.Name}\"");
}
string json = JsonConvert.SerializeObject(u);
StringContent content1 = new StringContent(json, Encoding.UTF8, "application/json");
content.Add(content1, "value");
bool fin = false;
do
{
fin = true;
var response = await client.PostAsync(uri, content);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
try
{
var Items = JsonConvert.DeserializeObject<List<string>>(result);
return Items;
}
catch
{
}
}
此服务器代码
public List<string> upload()
{
var httpRequset = HttpContext.Current.Request;
string imageslink = "";
if (httpRequset.Files.Count > 0)
{
foreach (string file in httpRequset.Files)
{
var postedfile = httpRequset.Files[file];
var filename = postedfile.FileName.Split('\').LastOrDefault().Split('/').LastOrDefault();
// var filepath = HttpContext.Current.Server.MapPath("~/Uploads/" + filename);
imageslink += "D:\casting\" + filename + ";";
var filepath = "D:\casting\" + filename;
postedfile.SaveAs(filepath);
}
请帮忙
与朋友交流后
查找了很多,发现问题的原因是服务器本身iis
因为它给出了 2 兆字节的最大上传限制的默认值
解决服务器在iis上的问题
IIS -> 网络。配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<!-- ~ 2GB -->
<httpRuntime maxRequestLength="2147483647" /> // kbytes
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- ~ 4GB -->
<requestLimits maxAllowedContentLength="4294967295" /> // bytes
</requestFiltering>
</security>
</system.webServer>
</configuration>
我需要通过 api 从客户端向服务器上传任何文件视频、图像和文档 此代码适用于我,但适用于小于 2MB 的文件 我无法下载最大 10 , 20MB 的文件 我尝试更改代码和样式 我也把它转换成一个byte[]并拆分成几个文件,但是没有用 请帮忙
此客户代码
uri = new Uri(WebAPIUrl + "setimg/");
try
{
var content = new MultipartFormDataContent();
if(mediafile!=null)
{
var streamContent = new StreamContent(mediafile);
streamContent.Headers.Add("Content-Type", "application/octet-stream");
content.Add(streamContent, "\"img\"", $"\"{mediafile.Name}\"");
}
string json = JsonConvert.SerializeObject(u);
StringContent content1 = new StringContent(json, Encoding.UTF8, "application/json");
content.Add(content1, "value");
bool fin = false;
do
{
fin = true;
var response = await client.PostAsync(uri, content);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
try
{
var Items = JsonConvert.DeserializeObject<List<string>>(result);
return Items;
}
catch
{
}
}
此服务器代码
public List<string> upload()
{
var httpRequset = HttpContext.Current.Request;
string imageslink = "";
if (httpRequset.Files.Count > 0)
{
foreach (string file in httpRequset.Files)
{
var postedfile = httpRequset.Files[file];
var filename = postedfile.FileName.Split('\').LastOrDefault().Split('/').LastOrDefault();
// var filepath = HttpContext.Current.Server.MapPath("~/Uploads/" + filename);
imageslink += "D:\casting\" + filename + ";";
var filepath = "D:\casting\" + filename;
postedfile.SaveAs(filepath);
}
请帮忙
与朋友交流后 查找了很多,发现问题的原因是服务器本身iis 因为它给出了 2 兆字节的最大上传限制的默认值
解决服务器在iis上的问题
IIS -> 网络。配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<!-- ~ 2GB -->
<httpRuntime maxRequestLength="2147483647" /> // kbytes
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- ~ 4GB -->
<requestLimits maxAllowedContentLength="4294967295" /> // bytes
</requestFiltering>
</security>
</system.webServer>
</configuration>