真正简单的任务。我有一个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
?
答案 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页面上的例子。