【发布时间】:2017-03-21 12:20:37
【问题描述】:
我正在使用优秀的文件收集包,
https://atmospherejs.com/vsivsi/file-collection
将图像存储在我的 Mongo 数据库中。在 Android 上运行应用程序不会显示图像(它们显示为损坏的图像)。在浏览器中是完美的。
我认为问题不是这个包独有的,因为它使用 Mongo 的 gridfs 来存储图像,并提供 URL 来访问它们。
这是 Vaughn 在文档中的注释:
带有 Meteor 1.2+ 的 Cordova Android 错误
由于与 Meteor 一起使用的 Cordova Android 版本中的错误 1.2,您需要将以下内容添加到您的 mobile-config.js 中,否则您将在 Android 设备上遇到此包的问题:
App.accessRule("blob:*");
我已经完成了,但没有成功。
我还看到文档参考设置标题以处理 CORS 问题,如下所示:
myFiles = new FileCollection('myFiles',
{ resumable: true, // Enable built-in resumable.js chunked upload support
http: [ // Define HTTP route
{ method: 'get', // Enable a GET endpoint
path: '/:md5', // this will be at route "/gridfs/myFiles/:md5"
lookup: function (params, query) { // uses express style url params
return { md5: params.md5 }; // a query mapping url to myFiles
},
handler: function (req, res, next) {
if (req.headers && req.headers.origin) {
res.setHeader('Access-Control-Allow-Origin', 'http://meteor.local'); // For Cordova
res.setHeader('Access-Control-Allow-Credentials', true);
}
next();
}
},
但又没有成功。
查看检查器上的网络选项卡,我什至看不到来自服务器的图像请求,这表明它被 Cordova 代码中的某些东西拒绝了,它甚至没有尝试出去获取图片。
我已经使用 Vaughn 的演示应用重现了这个问题,我已经分叉并添加了 android 平台,所以如果你愿意尝试和帮助,它就可以开始了。
https://github.com/mikkelking/meteor-file-sample-app
如果你做一个流星运行 android-device 它应该在 Android 上运行。您将需要注册然后上传图片以查看问题。在浏览器上它工作正常。
任何帮助将不胜感激,这对我的项目来说是一个阻碍。我考虑过的一种选择是将图像移动到 S3 存储桶,我认为这应该可以,但如果可以的话,我想将图像保留在数据库中。
【问题讨论】:
-
@GhostCat 我对那个帖子发表了评论,我没有将其标记为编辑。
-
嗯,您根据猜测可能是什么问题投票支持“OK”。这真的没有帮助。最后,OP 应该提供更多信息,否则,任何 OK 或编辑投票都不是正确的决定。无论如何,我很欣赏快速而善良的回归!
标签: javascript meteor blob gridfs