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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的JavaScript相关文章