0

真正简单的任务。我有一个指向 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)

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

4

2 回答 2

2

我在这里寻找从 URL 中取回 StorageFile 的方法,该 URL 是由调用 URL.CreateObjectURL(storageFile) 创建的。

我也在social.msdn上看到了 Sebastian 的帖子。无法从 URL 取回存储文件。我只需要使用 WinJS.xhr() 而不是后台传输。

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

更新:我找到了一种从 URL.CreateObjectURL 返回的 URL 中获取文件对象的方法。这来自w3 File API 规范第 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()
{
});
于 2013-04-01T11:02:07.217 回答
1

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

于 2012-07-21T15:58:14.603 回答