Cordova 相机返回 guid 不是 b64 或带有“xxx.png”的路径。需要上传文件
Posted
技术标签:
【中文标题】Cordova 相机返回 guid 不是 b64 或带有“xxx.png”的路径。需要上传文件【英文标题】:Cordova camera returning guid not b64 or path w/ "xxx.png". Need file for upload 【发布时间】:2016-06-10 18:54:02 【问题描述】:Cordova(和 JS)新手,请保持温和。
我正在尝试让我的应用程序拍照,一切正常,直到将它们上传到服务器。图片拍得很好,编辑作品(如果选择了编辑)。
我得到的是 imageData(来自文档的变量),它似乎是一个 url 编码的 guid。 (为了确定,我尝试了一个 atob ——它不是 b64——这很清楚,但以防万一)。该文档甚至有一个部分说:
function onPhotoDataSuccess(imageData)
// Uncomment to view the base64 encoded image data //<--- this...
// console.log(imageData);
....
但是如果我在那儿看对,在发生任何事情之前,我会得到类似的东西:
blob:http%3A//localhost%3A4400/5d142c27-3908-4db4-87dd-0a22d6e5fd62
我已尝试发送 Camera.DestinationType.DATA_URL、FILE_URI 等。所有这些。我总是明白这一点 - 选项似乎并不重要。
所以,我有一个 blob。如果我尝试通过 xhr 请求获取它,则会收到 500 错误。如果我尝试使用文件助手插件(window.FilePath....我不认为那个人喜欢 blob 什么的。
如果我尝试导航到该位置,我只会得到:
Cannot GET /5d142c27-3908-4db4-87dd-0a22d6e5fd62
如果我尝试导航到以下内容:
content://media/external/images/media/2/d085fb44-de36-46ed-93a4-73f140f4bc3d
它也失败了。
如果我拆分 GUID 并使用它(替换“-”),我会得到类似的结果:
q×xÓMz-÷_u-ã®´-iÞ
所以我不认为是这样......
我已经尝试弄明白这几个小时了。有人可以指出我正确的方向吗?我看过其他文章,但似乎没有任何效果。我很确定这是因为我返回的格式。
如果这很简单,我很抱歉。我是操作系统、语言和科尔多瓦的新手,我在这里尽力而为。只是不确定我的下一步。
如果需要更多代码,请告诉我,我会更新它。不过,这一切仍然是样板文件。
【问题讨论】:
【参考方案1】:如果其他人在这里结束,这是一个正确的修复(截至今天)。我在:Using PhoneGap, How to get base64 image data of the photo chosen from photo library in iPhone 找到它,感谢 revathy-durairajan:
创建这个函数。
function encodeImageUri(imageUri)
var c = document.createElement('canvas');
var ctx = c.getContext("2d");
var img = new Image();
img.onload = function ()
c.width = this.width;
c.height = this.height;
ctx.drawImage(img, 0, 0);
;
img.src = imageUri;
var dataURL = c.toDataURL("image/jpeg");
return dataURL;
使用 imageData 调用此函数
var testtest = encodeImageUri(imageData);
完成。
【讨论】:
以上是关于Cordova 相机返回 guid 不是 b64 或带有“xxx.png”的路径。需要上传文件的主要内容,如果未能解决你的问题,请参考以下文章