【发布时间】:2019-10-12 10:03:14
【问题描述】:
我的问题与此类似: webapi-file-uploading-without-writing-files-to-disk
但是,这个问题和大多数其他类似问题都停留在读取文件数据上。我已经使该位工作正常,但我也想读取表单中的其余表单数据,其中包含其他上传元素,例如“标题”等。这来自上述问题中的解决方案:
var filesToReadProvider = await Request.Content.ReadAsMultipartAsync();
filesToReadProvider 是 HTTPContent 对象的集合,所以我尝试了:
List<HttpContent> uploadedstuff = filesToReadProvider.Contents.ToList();
Image image = new Image(); ; // The image object we will create
Stream filestream; // The file stream object to use with the image
foreach (var thing in uploadedstuff)
{
try
{
string name = thing.Headers.ContentDisposition.Name.Replace("\"", ""); // String is quoted "\""namestring"\"" so need it stripped out
List<NameValueHeaderValue> parameters = thing.Headers.ContentDisposition.Parameters.ToList();
if (name == "file")
{
image.LocalFileName = thing.Headers.ContentDisposition.FileName;
filestream = await thing.ReadAsStreamAsync();
}
if (name == "Title")
{
// vvv- this line causes an exception.
NameValueCollection titleData = await thing.ReadAsFormDataAsync();
}
}
catch (System.Exception e)
{
var message = "Something went wrong";
HttpResponseMessage err = new HttpResponseMessage() { StatusCode = HttpStatusCode.ExpectationFailed, ReasonPhrase = message };
return ResponseMessage(err);
}
}
任何想法我应该做些什么来获得例如:“标题”表单数据?我觉得我很接近,但可能采取了错误的方法? 非常感谢。
【问题讨论】:
-
表单多部分内容的每个部分都有自己的内容类型。试试
thing.ReadAsStringAsync()看看有什么回报。如果是我认为的,我会详细说明 -
太棒了,谢谢!...是的,就是这样。我觉得我很接近,这得到了它。当场。
标签: c# asp.net-web-api http-headers