我有一个流星应用程序,在这一个我得到一个base64图像。我想将图像保存在Digital Ocean实例上,因此我会将其转换为png或其他图像格式,然后将其发送到服务器以获取图像的URL。 但我没有找到这样做的流星包。
你知道我怎么做吗?
答案 0 :(得分:1)
我遇到了类似的问题。
运行以下内容:
JSONModel
这将允许服务器上的以下代码,例如:
EmployeeModel
只需使用您喜欢的任何文件名称调用它,并使用base64字符串作为图像参数。
我希望这会有所帮助。我测试了这个,它可以在服务器上运行。我没有在客户端测试它,但我不明白为什么它不起作用。
答案 1 :(得分:1)
我使用fs.writeFile
中的File System
解决了我的问题。
这是我在客户端的javascript代码,我从插件中获得了base64图像(img
),当我点击我的保存按钮时,我这样做:
$("#saveImage").click(function() {
var img = $image.cropper("getDataURL")
preview.setAttribute('src', img);
insertionImage(img);
});
var insertionImage = function(img){
//some things...
Meteor.call('saveTileImage', img);
//some things...
}
在服务器端,我有:
Meteor.methods({
saveTileImage: function(fileData) {
var fs = Npm.require('fs');
var path = process.env.PWD + '/var/uploads/';
base64Data = fileData.replace(/^data:image\/png;base64,/, "");
base64Data += base64Data.replace('+', ' ');
binaryData = new Buffer(base64Data, 'base64').toString('binary');
var imageName = "tileImg_" + currentTileId + ".png";
fs.writeFile(path + imageName, binaryData, "binary", Meteor.bindEnvironment(function (err) {
if (err) {
throw (new Meteor.Error(500, 'Failed to save file.', err));
} else {
insertionTileImage(imageName);
}
}));
}
});
var insertionTileImage = function(fileName){
tiles.update({_id: currentTileId},{$set:{image: "upload/" + fileName}});
}
因此,流星方法saveTileImage
将base64图像转换为png文件,insertionTileImage
将其上传到服务器。
答案 2 :(得分:0)
BlobUrl,对你来说会更好吗?
在base64或其他任何地方将图像保存到服务器,然后在页面上查看图像时,生成它的blobUrl。该网址仅在此时使用,阻止他人在各种网站上使用您的网址,而不会使您的图片服务器超载......