[英]How to upload large file with WCF in MonoDroid
我正在尝试将WCF实现为MonoDroid。 我认为它和MonoTouch在这个问题上没有太大区别。 经过研究,我找不到除BasicHttpBinding之外的其他WCF绑定模式的替代方法。
老实说,我对WCF一点都不满意,所以我只是随机尝试了一些方法。 我可以使用字符串和byte []等从服务器获取消息,但是当我想上传大数据时,例如。 图片或音频,上传的包含大字节[]的邮件必须限制在8192字节以下。 这导致我的上传失败。
现在,我可以做的是将big byte []转换为Base64String,并将其拆分为8000bytes,然后执行一堆命令,如UploadAsyn(orderNumber,uploadStringBlock),然后使用orderNumber在服务器中重新进行格式化。 并从Base64string转换回字节。 很忙又傻!
否则,我必须考虑其他方法来解决从手机上传大文件的问题。
不能完全在WCF编码中实现所有动作确实是一个很大的遗憾和问题。
希望Mono改善它。 如有任何帮助,欢迎和赞赏。
最好的选择是不要使用WCF上载数据,而应使用纯HTTP传输。 使用WCF可以安全地获取一个上传令牌,该令牌可能只是一个URL,该URL编码了可以执行HTTP POST的地址以及将POST与要上传的用户/状态相关联的参数。
例如,您的WCF请求可以执行以下操作:
string GetTokenForUpload ()
{
var uuid = new UUID ();
db.Insert (key: uuid, for: "upload", login: user.Credentials);
return base_url + "?id=" + uuid;
}
然后在常规ASHX处理程序的POST处理程序上,您可以执行以下操作:
PostRequest (HttpRequest req, QueryString qstring)
{
id = qstring ["id"];
if (!db.Lookup (id, out userCredentials))
error ();
// accept post for the user.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.