【发布时间】:2016-12-08 15:06:22
【问题描述】:
我正在尝试上传带有正文内容的文件。 PostMultipartAsync 是唯一的方法吗?
在我的 C# 后端代码中,我有这个:
var resource = FormBind<StorageFileResource>();
var file = Request.Files.First().ToPostedFile();
FormBind 从请求中读取数据并填充对象。
通过使用PostMultipartAsync,我知道它应该像这样开始:
.PostMultipartAsync((mp) => { mp.AddFile(name, stream, name)}),但我不知道如何添加对象。你对此有什么想法吗?
这是我目前的尝试:
public static async Task<T> PostFileAsync<T>(string url, object data, string name, Stream stream, object queryString = null)
where T : class
{
return await HandleRequest(async () => queryString != null
? await url
.SetQueryParams(queryString)
.SetClaimsToken()
.PostMultipartAsync((mp) => { mp.AddFile(name, stream, name)})
.ReceiveJson<T>()
: await url
.SetClaimsToken()
.PostMultipartAsync((mp) => mp.AddFile(name, stream, name))
.ReceiveJson<T>());
}
前端正在发出的当前请求:
【问题讨论】:
-
ToPostedFile是否返回 System.Web.HttpPostedFile?另外,resource是什么以及它与这里有什么关系?file应该包含您要发布的所有内容,不是吗? -
另外,关于“它是使用 Flurl 上传文件的唯一方法”:技术上没有,但您调用的 API 或 Web 服务应该定义它所需的格式,无论是
multipart/form-data或者是其他东西。这是首先要找出的重要部分。 -
@ToddMenier 嗨,托德,关于第一个问题,不,这是本地课程。我从
HttpFile的列表中阅读。 Resource 是我的 ViewModel 类,我只是将请求字段与该类绑定,这里的目的是显示我正在单独读取其他字段。至于第 3 部分,它是一个需要multipart/form-data的 API,请查看我更新的答案,看看今天使用前端是如何完成的。 -
你是在问如何做一个需要文件和 JSON 对象的多部分帖子?
-
@ToddMenier 是的 :)