微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 将Knockout.js中的ByteArray发布到Web服务

我是KnockoutJS的新手,到目前为止我都在挖掘它,但尝试我可能无法在任何地方找到这些信息,所以我希望社区可以提供帮助!在我的视图中,我对文件输入有以下数据绑定:
<input type="file" data-bind="value: ImagetoUpload"/>
 <button data-bind="click: $root.saveImage">Upload</button>

这是“foreach”div中列表的一部分,因此变量“ImagetoUpload”对应于该列表中对象的属性.

在我的viewmodel中,Upload按钮调用saveImage(),我调用Web服务并将表单数据传递给.aspx页面

self.saveImage = function (MyObject,event) {

    $.post("Service.aspx",MyObject,function (returnedData) {

    });
}

该对象传递给我的服务很好,我可以按预期访问所有表单数据,包括“ImagetoUpload”变量……但这里是我被卡住的地方:

1)“ImagetoUpload”只是一个字符串,表示我上传文件名称,而不是ByteArray.如何访问图像文件而不仅仅是名称

2)有没有更好的方法将ByteArray作为Stream或其他格式传递给响应头?

3)我的技术完全不合适吗?有一个更好的方法吗?我的目标是拥有一个上传到的图像“插槽”的动态列表.

提前致谢!

解决方法

无法访问本地文件内容是JavaScript安全沙箱的基本限制.随着 HTML5 file API的推出,它被取消了,但不幸的是,支持far from universal.如果您的代码需要在不兼容的浏览器中工作,您唯一的选择是让浏览器处理传统的multipart / form-data上传.另一方面,如果不支持IE< 10对你来说很好,可以使用File API“Knockout方式”和自定义绑定.看看这个例子: http://khayrov.github.com/jsfiddle/knockout-fileapi(出于某种原因,当我尝试在其中运行此代码时,jsFiddle对我来说非常糟糕). Source code在Github.

原文地址:https://www.jb51.cc/js/159339.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐