【问题标题】:Could I upload a file through a web service?我可以通过网络服务上传文件吗?
【发布时间】:2010-12-26 16:20:13
【问题描述】:

我希望我的客户将一些文件上传到我的服务器。我目前的设计如下:

但我不知道下一步该怎么做?我相信客户有权写入 Web 服务返回的虚拟路径,但我怎么能编写我的客户端代码,以便它可以实际将内容复制到该虚拟路径?我的客户端是 Win32 应用程序,而不是网页。

如果我希望客户在网页中上传文件,该怎么做?我知道HTTP协议中有一个“PUT”方法可以用来上传东西到服务器,但是如何使用呢?

我是这种网络开发的新手。我希望我说清楚了。如果有更好的设计,请告诉我。

非常感谢。

更新 - 1 - 0:59 2010/12/27

类似问题:How to upload a file to a WCF Service?

一些可能的解决方案:

Image Upload Web Service in C#.NET

Upload any type of File through a C# Web Service

Progress Indication while Uploading/Downloading Files using WCF

【问题讨论】:

    标签: web-services webservice-client


    【解决方案1】:

    我会避免允许任何人将文件写入目录。我知道您已经设置了权限以帮助防止发生任何不良情况,但它仍然设置为任何人都可以读取/写入它的位置,而不仅仅是您告诉 URL 的人。通过默默无闻的安全性不是最佳做法。

    您使用的是哪种网络服务? WCF、SOAP 和其他东西都在一起?我会让文件上传仍然是一个服务调用(不仅仅是一些 PUT 命令到一个目录)。这样,如果需要,您仍然可以应用安全性。当您深入了解它时,文件只不过是一个字节数组,因此您可以让您的 Web 服务接受一个字节数组并将其写入正确的位置。如果我对您使用的技术(php、asp.net、jsp 等)有更好的了解,那么我可能会提出更准确的建议。

    HTH

    【讨论】:

    • 感谢您的回复。我正在使用 WCF、asp.net 和 javascript。
    • 如果使用 WCF,那么您可以流式传输文件:msdn.microsoft.com/en-us/library/ms789010.aspx。我以前做过一次,效果很好。我遇到的唯一问题是文件完全上传需要超过 5 分钟,然后我遇到了默认时钟偏差为 5 分钟的问题。有一些方法可以解决它,但它并不漂亮(所有的丑陋都在配置文件中,而不是在代码中)。
    【解决方案2】:

    您可以使用SOAP attachments,或者如果不使用 SOAP,则使用类似的东西 - 指定文件名、内容类型和二进制数据,Base64 编码。

    【讨论】:

      最近更新 更多