You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have an issue uploading images with GridFS, here is my code
import { MongoObservable } from 'meteor-rxjs';
import { UploadFS } from 'meteor/jalik:ufs';
import { Meteor } from 'meteor/meteor';
import gm from 'gm';
import { Picture, DEFAULT_PICTURE_URL } from '../models';
export interface PicturesCollection<T> extends MongoObservable.Collection<T> {
getPictureUrl(selector?: Object | string): string;
}
export const Pictures =
new MongoObservable.Collection<Picture>('pictures') as PicturesCollection<Picture>;
export const PicturesStore = new UploadFS.store.GridFS({
collection: Pictures.collection,
name: 'pictures',
chunkSize: 1024*255,
filter: new UploadFS.Filter({
minSize: 1,
maxSize: 1024 * 10000, // 10MB,
contentTypes: ['image/*'],
extensions: ['jpg', 'png', 'gif']
}),
permissions: new UploadFS.StorePermissions({
insert: picturesPermissions,
update: picturesPermissions,
remove: picturesPermissions
}),
// Transform file when reading
transformRead(from, to, fileId, file, request) {
from.pipe(to); // this returns the raw data
},
transformWrite(from, to, fileId, file) {
let gm = Npm.require('gm');
if (gm) {
gm(from)
.resize(400, 400)
.gravity('Center')
.extent(400, 400)
.quality(75)
.stream().pipe(to);
} else {
console.error("gm is not available", file);
}
}
});
Pictures.getPictureUrl = function (selector) {
const picture = this.findOne(selector) || {};
return picture.url || DEFAULT_PICTURE_URL;
};
function picturesPermissions(userId: string): boolean {
return Meteor.isServer || !!userId;
}
actually the picture is being saved on Mongo, but with size zero.
If I remove "transformWrite" everything works like a charm. Maybe is a problem related to gm, but i did not found any solution.
Note: using localFS produce the same issue.
I have installed gm with
meteor npm install -g gm
Thanks
The text was updated successfully, but these errors were encountered:
Installing gm is not enough, you also have to install the graphicsmagick package on your OS.
For example on Debian/Ubuntu: apt update && apt install graphicsmagick, or through your graphical package manager.
To complete @macman31 's anwer, gm is a node package that expose an API (methods) to do some processing on images (resize, crop, compress...), but it does nothing on its own, instead it requires graphicsmagick which is a system package that you can install with apt-get on Debian based OSes.
I have an issue uploading images with GridFS, here is my code
actually the picture is being saved on Mongo, but with size zero.
If I remove "transformWrite" everything works like a charm. Maybe is a problem related to gm, but i did not found any solution.
Note: using localFS produce the same issue.
I have installed gm with
meteor npm install -g gm
Thanks
The text was updated successfully, but these errors were encountered: