c# - 如何检测取消的异步帖子
问题描述
我使用以下代码异步上传文件和表单数据。我需要更改哪些内容才能检测传输是否已取消或中断,然后采取适当的措施?
[HttpPost]
public async Task<object> UploadFile()
{
if (!Request.Content.IsMimeMultipartContent("form-data"))
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
}
var streamProvider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/App_Data/Temp/"));
try
{
var filesReadToProvider = await Request.Content.ReadAsMultipartAsync(streamProvider);
var paramName = "formInput";
var formStreamToRead = filesReadToProvider.Contents.First(x => x.Headers.ContentDisposition.Name == $"\"{formInput}\"");
var formInput = await formStreamToRead.ReadAsStringAsync();
foreach (var fileData in streamProvider.FileData)
{
var fileName = "";
if (string.IsNullOrEmpty(fileData.Headers.ContentDisposition.FileName))
{
fileName = Guid.NewGuid().ToString();
}
fileName = fileData.Headers.ContentDisposition.FileName;
if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
{
fileName = fileName.Trim('"');
}
if (fileName.Contains(@"/") || fileName.Contains(@"\"))
{
fileName = Path.GetFileName(fileName);
}
File.Move(fileData.LocalFileName, Path.Combine(HttpContext.Current.Server.MapPath("~/App_Data/"), Path.GetDirectoryName(fileName) + Guid.NewGuid() + Path.GetExtension(fileName)));
}
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
解决方案
推荐阅读
- c++ - 潜在的内存泄漏,获取子向量
- function - 如何在控制器Codeginiter 4中调用同一类中的函数
- ruby - 在 MAC 上安装 ruby 3.0.2 时出错:运行时出错 '__rvm_make -j8' 错误
- pine-script - 找不到函数或函数引用“ema”
- logstash - logstash:如何“捆绑更新 logstash-codec-plain”
- haskell - 需要帮助理解 Haskell 递归除法函数
- r - R 项频率分析 (TF-IDF) 中的错误
- android - 在安卓手机热点设置代理
- c# - Blazor WASM - 防止子组件被点击
- typescript - 键入对象中的键,其中该键的值满足约束