使用WinJS.xhr将文件输出到休息服务

时间:2012-07-11 21:48:34

标签: javascript windows-8 winjs

真正简单的任务。我有一个Win8客户端应用程序中的文件的URL,我从这样做:

this.image = URL.createObjectURL(file);    

现在我需要通过互联网发送文件:

var options = {
type: method,
url: MyApplication.servicesUri + "rest/" + dpName + queryParameters,
headers: { "Content-type": "application/json" },
data: JSON.stringify(objParameters)
};
WinJS.xhr(options)

所以问题是,如何“反转”我的第一个操作并获取文件,以便我可以将其设置为我的PUT请求的data

2 个答案:

答案 0 :(得分:2)

我点击此处寻找从URL获取StorageFile的方法,该URL由调用URL.CreateObjectURL(storageFile)创建。

我也在social.msdn看到了塞巴斯蒂安。无法从URL获取存储文件的任何工作。我需要使用WinJS.xhr()而不是后台传输。

我最终使用解决方案来保存storageFile和URL引用 - [绑定到image.src的URL用于显示,而storageFile用于上传到blob。 MSApp.CreateFileFromStorageFile对此非常有用。可以看到完整的代码段here

更新:我找到了一种从URL.CreateObjectURL返回的URL中恢复文件对象的方法。这来自w3 File API spec第12.7节。只需使用WinJS.xhr即可获得blob。

// url like - blob: <guid>
WinJS.xhr({ url: url, responseType: 'blob' });
}).then(function (req)
{
    var blob = req.response;
}).then(null, function onerror()
{
});

答案 1 :(得分:1)

我用不同的方法解决了这个问题,但这个问题的答案来自DataRead。看一下msdn页面上的例子。