gpt4 book ai didi

angularjs - Meteor CollectionFS - 在服务器上上传图像

转载 作者:行者123 更新时间:2023-12-04 21:11:08 24 4
gpt4 key购买 nike

我正在使用 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'})
]
});

该代码非常适合我。但正如您所见,一切都在客户端 Controller 中完成。如何在 Meteor 中的服务器 Controller 上执行此操作?

如何将我的文件发送到服务器,以便我可以在那里处理、插入或上传我的图像?

编辑

如您所知,Android 应用程序将发送一个 base64 编码的字符串。那么我将如何对待它呢?我想在 Meteor Server 上有一个集中的图像上传功能。

最佳答案

您可以将该逻辑放在 Meteor Method 中.
然后您可以决定是希望该方法仅在服务器上运行,还是同时在客户端和服务器上运行(延迟补偿)。

因此,我会将您的 Controller 更改为:

$scope.uploadFile = function(event){
Meteor.call("uploadFiles", event.target.files);
};

Schema.js (或任何其他可以在服务器或客户端和服务器上运行的文件 - 阅读有关 Meteor 文件结构的更多信息 here)
Images = new FS.Collection("images", {
stores: [
new FS.Store.FileSystem("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], function (err, fileObj) {
});
}

}
});

该方法还可以返回值,在服务器和客户端上运行。
我还会在 Meteor guide 上阅读有关 Meteor 方法的更多信息.

关于angularjs - Meteor CollectionFS - 在服务器上上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com