asp.net - 通过网络服务接收文件的最佳方式

标签 asp.net web-services

我有一个由可通过 GET/POST/SOAP 调用的 ASP.NET Web 服务组成的 API。

一项新功能将要求我通过此网络服务接受文件。基本上,我允许用户通过 API 将文件上传到文件存档,否则他们可以通过登录我们基于浏览器的管理系统来完成此操作。

API 需要尽可能易于使用。我正在考虑放弃 SOAP 支持,因为我们的 PHP 客户端主要使用 GET/POST 方法,而 .NET 客户端不介意这两种方式。以此为先决条件,我正在考虑简单地创建一个 UploadFile(fileName) 方法,并要求用户通过 POST 发送文件作为正常的文件上传。

但是,我将无法将文件字段指定为该方法的参数,对吗?因此,如果我只是在文档中声明“文件应在名为"file"的 POST 字段中发送”,那么当我需要读取该文件时,这会带来任何问题吗?

所有文件均为二进制格式、PDF、各种图像格式、FLV 等。另外,文件大小主要在2-20MB附近,但是考虑到上述解决方案,我在接受250MB区域的文件时会遇到麻烦吗?

以这种方式接收文件会导致在将文件写入磁盘之前将其完全加载到内存中 - 除了让服务接收 Stream 从而禁止我接受其他参数之外,还有什么办法可以解决这个问题吗?妨碍服务的便捷使用?

<小时/>

除了我这边可能做的事情之外,我还很好奇如何让被调用者尽可能轻松地发送文件。我猜 POST 是接收文件最方便的方式之一,但如果有人有任何意见,我也想听听。

最佳答案

使用简单的 POST 方法来提交文件并没有什么可怕的错误,只是将文件上传与任何相关元数据(即该方法的其他参数,如果它与该方法捆绑在一起)绑定(bind)的细节。

然而,今天,我相信在 SOAP 调用中处理大型对象的方法是 MTOM。这是一种优化,但它为您提供了实际有效负载的流接口(interface)。因此,如果需要,该框架可以轻松地将大型对象缓存到磁盘(它们是否真的这样做是另一个问题,但没有人希望必须将 250M 的上传吸收到内存中,所以我想任何现代框架都会卸载大型附件) .

关于asp.net - 通过网络服务接收文件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223761/

相关文章:

java - 是否可以从 Web 浏览器访问 JAX-WS?

asp.net - Microsoft JScript 运行时错误 : 'JSON' is undefined

c# - ASP.NET Web API 下载文本

c# - 由于 updatepanel 没有分配窗口 setTimeout?

java - 如何将 HashMap 作为 Java Web 服务的输入?

java - 传递 null 参数时,CXF REST 调用方法中出现 NullPointerException

mysql - CreateUserAndAccount 方法 - SimpleMembership Provider

c# - 如何在VS2013中调试 "Object reference not set to an instance of an object"?

java - 在 tomcat webapp 中引用可变的外部 web 服务 url

asp.net - 有效的 ASP.NET Webmethod 返回类型有哪些?