通过 Web 服务上传文件

Posted

技术标签:

【中文标题】通过 Web 服务上传文件【英文标题】:File Uploads via Web Services 【发布时间】:2010-09-05 22:08:16 【问题描述】:

是否可以通过网络服务将文件从客户端计算机上传到服务器?客户端可以运行任何东西,从原生桌面应用到瘦 ajax 客户端。

【问题讨论】:

【参考方案1】:

当然可以通过 Web 服务(例如 SOAP)发送二进制文件,但您通常必须进行某种编码,例如 base64,这会增加要发送的数据量。发送任意二进制文件的最有效方法之一是通过 HTTP PUT 操作,因为没有编码开销。并非所有客户都一定有简单的方法来做到这一点,但值得一看。

硬币的另一面是如何从用户磁盘上获取数据并连接到网络连接。 “瘦 ajax 客户端”可能没有从用户磁盘读取文件的必要权限。另一方面,桌面应用程序实现可以毫无问题地做到这一点。

【讨论】:

【参考方案2】:

我不是“webservice”的高手,但是如果你开发webservice(和客户端),你总是可以在客户端将二进制文件转换为BASE64(可以在java中做......我在 ajax 中也一样)并作为“字符串”传输,另一方面,在 web 服务中从 BASE64 编码为二进制...

这是一种想法,可行,但在所有环境中可能并不“正确”。

【讨论】:

以上是关于通过 Web 服务上传文件的主要内容,如果未能解决你的问题,请参考以下文章

web服务端安全---文件上传漏洞

web安全基础-文件上传(含部分upload-labs靶场通关)

文件上传漏洞

文件上传漏洞

WEB安全性测试之文件上传漏洞

如何通过使用 Selenium Grid 将文件从本地计算机传输到远程 Web 服务器来上传文件