【发布时间】:2018-02-27 14:20:19
【问题描述】:
我在 Sharepoint 上有一个 Infopath 表单模板,我想在其中添加一个按钮,这样当用户单击它时,它将POST 一个字符串到以下 Web API。以下 Web API 经过测试并返回一个 excel 文件,如下所示:
我想使用 post 请求发布 excel 文件的FileName,请求方法为 POST 类型对我来说很重要。然后用户将下载具有指定“文件名”的文件。
实际上我想使用 post 方法,因为在下一阶段我也会发送 excel 文件的内容。
重要提示:我只能使用 .Net FrameWork 3.5,因为这是 InfoPath 表单模板中唯一支持的框架。
[HttpPost]
public HttpResponseMessage Post([FromBody]string FileName)
{
string reqBook = "c:\somefile.xlsx";
//converting Excel(xlsx) file into bytes array
var dataBytes = File.ReadAllBytes(reqBook);
//adding bytes to memory stream
var dataStream = new MemoryStream(dataBytes);
HttpResponseMessage httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK);
httpResponseMessage.Content = new StreamContent(dataStream);
httpResponseMessage.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
httpResponseMessage.Content.Headers.ContentDisposition.FileName = FileName;
httpResponseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
return httpResponseMessage;
}
【问题讨论】:
-
如果你只是想从c#调用一个API,docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/…
-
不,它不是重复的,因为他们只下载 excel 文件,但它想使用 post 请求发送文件名。然后下载该文件。我不想使用 get 方法,因为在接下来的阶段我还想在 post 请求中指定 excel 文件的内容
标签: c# asp.net-web-api2