APICloud、appCan、DCloud、H5 plus 等等之类的技术,都是一种 Hybird 方案,原理是通过 Native 与 Web 通信,甚至是通过 bulid 将 Web 部分组件 Native 化来实现的 Native App 的一种技术。其实这才是他们的本质,而他们的服务端技术,我这里保留我的意见,暂不评论。
首先为什么用一个技术方案,你要综合调研,仔细了解一下。
上传图片输入 URL,这个 URL 也只是一个资源定位符,Hybird 方案中的图片应该是本地的或插件中特定文件路径内的图片,或者原理是先下载到本地,再通过 API 上传。这是 Native App 本身的能力,不是 Web 浏览器所具备的。
LeanCloud 与他们不同,我们重点在于提供后端接口和纯 Native SDK(JavaScript SDK、iOS SDK、Andriod SDK、C++ SDK、Windows Phone SDK 等等)。
所以,回到上传这个问题,LeanCloud 提供了上传接口,这个接口支持多种数据格式,你可以调研,并尝试通过对应的方式调用。如果是 iOS App 那可以通过下载图片,然后再从本地上传也可。但是纯 Web 抓取图片上传的功能我们暂时没有,而且这个功能提供了可能会有被图片商屏蔽、甚至起诉的风险。浏览器的限制我们也是突破不了的,比如浏览器读本地文件需要授权、特定文件等,可以参考 HTML5 File 相关标准文档。
再补一刀,使用 APICloud、appCan、DCloud、H5 plus 等等之类的技术,也可以同时使用 LeanCloud 的各种服务。
看源码一目了然啊:
save: function() {
var options = null;
var saveOptions = {};
if(arguments.length === 1) {
options = arguments[0];
} else if(arguments.length === 2) {
saveOptions = arguments[0];
options = arguments[1];
}
var self = this;
if (!self._previousSave) {
if(self._source) {
var upload = require('./browserify-wrapper/upload');
upload(self, AV, saveOptions);
} else if(self.url && self.metaData['__source'] == 'external') {
//external link file.
var data = {
name: self._name,
ACL: self._acl,
metaData: self._metaData,
mime_type: self._guessedType,
url: self._url
};
self.previousSave = AV.request("files", self._name, null, 'POST', data).then(function(response) {
self._name = response.name;
self._url = response.url;
self.id = response.objectId;
if(response.size) {
self._metaData.size = response.size;
}
return self;
});
}
}
return self.previousSave.thenRunCallbacks(options);
}
};
};
我用了base64,但是一直提示
Uncaught TypeError: Illegal constructor at https://cdn1.lncld.net/static/js/av-min-1.2.1.js:24
感觉完全是按照官方文档来的呀,并且打印出来base64编码也是没有问题的
var data = { base64: my_base64};
var file = new AV.File('HEAD.jpg',data)
file.save().then(function(file) {
// 文件保存成功
console.log(file.url());
}, function(error) {
// 异常处理
console.error(error);
});
请求解决
推荐主题
主题 | 分类 | 回复 | 浏览 | 活动 |
---|---|---|---|---|
AVCloud.CallFunctionAsync 只能提交 2K 数据? | 综合讨论 | 1 | 835 | 15-06-30 |
Android 有个方法没有callback | 综合讨论 | 2 | 1.0K | 15-08-7 |
如何让上传的网页可以读出css和图片 | 综合讨论 | 1 | 716 | 15-07-14 |
请问消息推送有nodejs的包吗? | 综合讨论 | 2 | 1.0K | 15-08-7 |
按照文档部署用户反馈无法接收消息 | 综合讨论 | 10 | 3.5K | 15-06-23 |