【问题标题】:What is the best way to pass an Excel file to a WEB API web service将 Excel 文件传递​​给 WEB API Web 服务的最佳方法是什么
【发布时间】:2015-02-01 11:43:46
【问题描述】:

我需要将一个 Excel 文件传递​​给用 C# 实现的 Web 服务。目前我创建的Web服务如下。

 public void loadData([FromBody]string dataFile)
        {

        }

我还认为传递 Excel 文件使用 Base64 字符串是可以接受的; 这是一个好方法还是有更好的方法来做到这一点?

【问题讨论】:

  • 您可以通过符合 RFC 1149 的链接发送它。你如何发送它并不重要。重要的是网络服务期望/要求什么。
  • 那么接受文件作为字符串好吗?

标签: web-services rest asp.net-web-api


【解决方案1】:

基本上,您将文件作为 multipart/form-data HTTP 请求的一部分传递。

How To Accept a File POST

Sending HTML Form Data in ASP.NET Web API: File Upload and Multipart MIME

编辑: 要接收任何类型的二进制文件,请使用以下代码。然而,这是相当不安全的。确实,应该检查请求标头的内容类型和内容长度。

public void loadData() {
    /* get raw data */
    string dataFile = Request.Content.ReadAsStringAsync().Result
}

Accepting Raw Request Body Content with ASP.NET Web API

【讨论】:

  • 网络服务还是一样吗?我指的是 public void loadData([FromBody]string dataFile)
  • 在我看来,将文件作为字符串传递并不是一个好主意。您不知道文件是什么类型,也不知道实际的二进制长度是多少。此外, mutlipart/form-data 内容类型是 HTML 表单提交文件的唯一方式。您可以只发送文件二进制文件,而不是 mutlipart/form-data 或 base64 字符串。 blog.marcinbudny.com/2014/02/…
  • 如果使用 mutlipart/form-data 内容类型,那么 public void loadData(?) 方法的签名必须是什么
  • 编辑了答案。它现在包含双向链接。
  • 我有以下检查 if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);但是字符串 dataFile (Request.Content.ReadAsStringAsync().Result) 是空的
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 2023-03-31
  • 2012-03-05
相关资源
最近更新 更多