【发布时间】:2016-11-02 15:20:48
【问题描述】:
我有一个采用字节数组的 .NET Web 服务。
我有一个 GWT 客户端,我希望用户使用 FileUpload 控件选择一个文件并通过 HTTP 流将其发送到 Web 服务。
文件上传控件包含获取所选文件的文件路径的方法。 然后如何获取该文件并将其转换为字节数组?
我愿意接受有关如何将文件获取到我的 Web 服务的建议,但不太确定 Byte 数组是否可以工作...
【问题讨论】:
标签: gwt
我有一个采用字节数组的 .NET Web 服务。
我有一个 GWT 客户端,我希望用户使用 FileUpload 控件选择一个文件并通过 HTTP 流将其发送到 Web 服务。
文件上传控件包含获取所选文件的文件路径的方法。 然后如何获取该文件并将其转换为字节数组?
我愿意接受有关如何将文件获取到我的 Web 服务的建议,但不太确定 Byte 数组是否可以工作...
【问题讨论】:
标签: gwt
如果你想在 GWT 中转换文件,意思是在浏览器中。仅使用 JavaScript 在浏览器中是不可能的。 FileUpload是html输入类型文件上传只能像提交表单一样将文件发送到服务器。出于安全原因,浏览器无法从您的文件系统中读取文件。 (你可以使用像 flash 插件这样的插件来让它工作,虽然我手头没有例子)。
如果您想将文件内容发送到您的网络服务,您需要或将其直接上传到网络服务或将其发送到另一台服务器,将其转换并从该服务器将其提交到您的网络服务或编写或查找一些(闪存) 插件为您完成。
【讨论】:
这个链接可能对你有帮助How to convert a byte array to a string, and string to a byte array with GWT
String(byte[] bytes) 构造函数和 String.getBytes() 方法不是 GWT JRE 模拟 String 类实现的。
【讨论】:
这在纯 Javascript(尚)中是不可能的,但可以通过 flash 或签名的小程序来完成。就我个人而言,我要做的是创建一个签名的小程序,它会在页面上的某个地方但不可见。当用户选择要发送到服务器的文件时,您将从输入中获取文件位置并将其发送到小程序,小程序将加载文件并将数据作为字节数组返回给 Javascript。如果您可以灵活地更改 Web 服务以接受多部分表单数据,那么您可以这样做,只需将文件上传字段包含在表单中并提交表单。现在,您可以使用 HTML5 进行操作,并且可以看到演示 here,因此,如果您能够指定用户至少使用半 HTML5 兼容的浏览器,例如 FF3.6 或 Chrome 6,您可以祝你好运。
【讨论】: