相关疑难解决方法(0)

将数据URI转换为File然后附加到FormData

我一直在尝试重新实现像Mozilla Hacks网站上的 HTML5图像上传器,但它适用于WebKit浏览器.部分任务是从canvas对象中提取图像文件并将其附加到FormData对象以进行上载.

问题是虽然canvas具有toDataURL返回图像文件表示的函数,但FormData对象仅接受来自File API的 File或Blob对象.

Mozilla解决方案使用以下仅限Firefox的功能canvas:

var file = canvas.mozGetAsFile("foo.png");
Run Code Online (Sandbox Code Playgroud)

...在WebKit浏览器上不可用.我能想到的最好的解决方案是找到一种方法将数据URI转换为File对象,我认为它可能是File API的一部分,但我不能为我的生活找到一些东西.

可能吗?如果没有,任何替代方案?

谢谢.

javascript html5 webkit

270
推荐指数
11
解决办法
23万
查看次数

我可以将跨站点 <img/> 标记的数据作为 blob 获取吗?

我正在尝试将网页链接到的几个图像保存到离线存储中。我在 Firefox 上使用 IndexedDB,在 Chrome 上使用 FileSystem API。我的代码实际上是一个扩展,因此在 Firefox 上我在 Greasemonkey 上运行,在 Chrome 上作为内容脚本运行。我希望这是自动化的。

当我检索图像文件时遇到问题。我正在使用标题为在 IndexedDB 中存储图像和文件的文章中的示例代码,但出现错误:我尝试下载的图像位于不同的子域上,并且 XHR 失败。

XMLHttpRequest cannot load http://...uxgk.JPG. Origin http://subdomain.domain.com is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

在 Firefox 上我可能可以使用GM_xmlhttpRequest并且它可以工作(当我位于同源 URL 时,代码在两种浏览器上都可以工作),但我仍然需要解决 Chrome 的问题,其中其他限制(即需要交互)主页上有框架)要求我将我的脚本合并到页面中并放弃我的特权。

所以回到我试图找出一种方法来将链接到(并且可能出现在)页面中的图像保存到 IndexedDB 和/或 FileSystem API。我要么需要了解如何解决 Chrome 中的跨域问题(如果它需要权限,那么我需要修复与 jQuery 交互的方式),要么需要某种反向createObjectURL。归根结底,我需要一个 blob (File对象,据我所知)放入 IndexedDB (Firefox) 或写入 FileSystem API (Chrome)

帮忙,有人吗?


编辑:我的问题实际上可能归结为如何以我想要的方式使用 jQuery,而不失去 Chrome 上的内容脚本权限。如果我这样做,我也可以在 Chrome 上使用跨域 XHR 。尽管我更愿意得到一个不依赖于此的解决方案。具体来说,因为如果我将脚本合并到网页中,并且不要求它是内容脚本/用户脚本,我希望使用此解决方案。


编辑:我意识到问题只是关于跨站点请求现在,在 @chris-sobolewski、这些 问题和其他一些页面(如 …

html javascript greasemonkey google-chrome-extension

5
推荐指数
1
解决办法
3586
查看次数