angularjs – Meteor CollectionFS – 在服务器上上传图像
发布时间:2020-12-17 07:14:17 所属栏目:安全 来源:网络整理
导读:我正在使用Meteor CollectionFS.目前我的文件上传是在客户端上执行的.我想在服务器上执行文件上传,以便其他平台如andriod或ios可以使用我的文件上传服务. 目前这是我的代码: client.html input type="file" custom-on-change="uploadFile" clientController
我正在使用Meteor CollectionFS.目前我的文件上传是在客户端上执行的.我想在服务器上执行文件上传,以便其他平台如andriod或ios可以使用我的文件上传服务.
目前这是我的代码: client.html <input type="file" custom-on-change="uploadFile"> clientController.js app.controller('clientController',function ($scope,$meteor,$filter) { $scope.uploadFile = function(event){ var files = event.target.files; for (var i = 0,ln = files.length; i < ln; i++) { files[i].userId = Meteor.userId(); Images.insert(files[i],function (err,fileObj) { }); } }; }); app.directive('customOnChange',function() { return { restrict: 'A',link: function (scope,element,attrs) { var onChangeHandler = scope.$eval(attrs.customOnChange); element.bind('change',onChangeHandler); } }; }); Schema.js Images = new FS.Collection("images",{ stores: [ new FS.Store.FileSystem("images",{path: '~/uploads'}) ] }); 该代码适合我.但正如您所看到的,一切都在客户端控制器中完成.如何在Meteor的服务器控制器上执行此操作? 如何将文件发送到服务器,以便我可以在那里处理,插入或上传图像? 编辑 如您所知,Android应用程序将发送base64编码的字符串.那我该怎么对待呢?我想在Meteor服务器上有一个集中的图像上传功能. 解决方法
您可以将该逻辑放在
Meteor Method中.
然后,您可以决定是否希望该方法仅在服务器上运行,或者在客户端和服务器上运行(延迟补偿). 所以我会将你的控制器更改为: $scope.uploadFile = function(event){ Meteor.call("uploadFiles",event.target.files); }; Schema.js(或可以在服务器或客户端和服务器上运行的任何其他文件 – 阅读有关Meteor文件结构here的更多信息) Images = new FS.Collection("images",{path: '~/uploads'}) ] }); Meteor.methods({ uploadFiles: function (files) { for (var i = 0,ln = files.length; i < ln; i++) { files[i].userId = Meteor.userId(); Images.insert(files[i],fileObj) { }); } } }); 该方法还可以返回值,在服务器和客户端上运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |