代码如下
var url = 'http://img.t.sinajs.cn/t5/style/images/global_nav/WB_logo.png?id=1382608648268';AV.Cloud.httpRequest({ url: url, text: false, success: function (httpResponse) { var filename = 'image.png'; var file = new AV.File(filename, httpResponse.buffer);// var file = new AV.File(filename,[ 0xBE, 0xEF, 0xCA, 0xFE ]); file.save().then(function () { // The file has been saved to AV. res.send('OK'); }, function (error) { res.send(500, error); }); }, error: function (httpResponse) { console.error('Request failed with response code ' + httpResponse.status); res.send(httpResponse.status); }});return;
如果用上面的代码,我会收到这样的错误:
Thu, 16 Jan 2014 09:27:02 GMT uncaughtException: Cannot call method 'then' of undefinedTypeError: Cannot call method 'then' of undefined at Object.AV.File.save (/usr/local/lib/node_modules/avoscloud-code/node_modules/avoscloud-sdk/lib/av.js:4147:43) at AV.Cloud.httpRequest.success (/Users/ph/Documents/iphone/aphree_server/cloud/admin.js:43:12) at /usr/local/lib/node_modules/avoscloud-code/node_modules/avoscloud-sdk/lib/av.js:3709:27 at wrappedResolvedCallback (/usr/local/lib/node_modules/avoscloud-code/node_modules/avoscloud-sdk/lib/av.js:3635:38) at /usr/local/lib/node_modules/avoscloud-code/node_modules/avoscloud-sdk/lib/av.js:3586:26 at Array.forEach (native) at Object._.each._.forEach [as _arrayEach] (/usr/local/lib/node_modules/avoscloud-code/node_modules/avoscloud-sdk/lib/av.js:95:11) at _.extend.resolve (/usr/local/lib/node_modules/avoscloud-code/node_modules/avoscloud-sdk/lib/av.js:3585:10) at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/avoscloud-code/lib/cloud_code.js:298:20) at IncomingMessage.EventEmitter.emit (events.js:117:20)
如果用注释中的代码,则不会遇到任何问题。
请问是我哪里搞错了吗?buffer不能直接用在AVFile的参数中?
解决方案
现在可以直接用Buffer了。