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.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...