<img src="../image/demo.jpg">
-
创建时间
15年7月20日
-
最后回复
17年7月4日
-
29
回复
-
12.9K
浏览
-
9
用户
-
2
赞
-
3
链接
<img src="../image/demo.jpg">
HTML:
<input id="file" type="file">
JavaScript:
var avFile;
var f = document.querySelector('#file');
f.addEventListener('change', function() {
avFile = new AV.File('test', f.files[0]).save({
success: function(data) {
console.log(data);
}
});
});
var avFile = new AV.File(name, file); 这个file接收什么样的类型,对象吗?
用img为什么总是不行?img.scr报错,说是不能用string
var img = document.querySelector('#imgTest');
console.log(img);
var post = new AV.Object("Post");
avFile = new AV.File('test', img);
post.save({
content: "每个 JavaScript 程序员必备的 8 个开发工具",
pubUser: "LeanCloud官方客服",
photo: avFile
}, {
success: function(post) {
console.log('实例已经成功保存.')
},
error: function(post, error) {
console.log('失败了.')
}
});
这个 file 当然是 传过来的浏览器 file 对象的一个实例。
如果你是像通过 url 上传,请再看下文档,有两种技术方案。
可以通过 AV.File.withURL()
或者通过 base64 上传
但是对方如果有防盗链功能,就可能会失败。
因为 Node.js 对 IO 的读写经常都是经过 Buffer,通过支持 Buffer,我们的 SDK 也能很好地工作在 Node.js 环境。
+
从0.3.2版本开始,我们还支持保存一个现有存储在其他服务上的 URL 的文件对象:
+
var file = AV.File.withURL('test.jpg', 'https://leancloud.cn/docs/images/permission.png');
file.save();
以上是文档说明,我看到node.js就以为那里是node.js用的,就跳过了。
但用AV.File.withURL() 。依然不行,后台的photo是object类型(自动创建的)。console提示成功。后台图片是空的
var img = document.querySelector('#imgTest');
console.log(img.src);
var post = new AV.Object("Post");
var avFile = AV.File.withURL('test.jpg', 'https://leancloud.cn/docs/images/permission.png');
// var avFile = new AV.File('test', img);
post.save({
content: "每个 JavaScript 程序员必备的 8 个开发工具",
pubUser: "LeanCloud官方客服",
photo: avFile
}, {
success: function(post) {
console.log('实例已经成功保存.')
},
error: function(post, error) {
console.log('失败了.')
}
});
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 的各种服务。