【问题标题】:Upload file with Meteor and React-Dropzone使用 Meteor 和 React-Dropzone 上传文件
【发布时间】:2016-11-15 04:42:59
【问题描述】:

我正在尝试使用 react-dropzone 将图像上传到流星集合:

Meteor 包使用:meteor add jalik:ufsmeteor add jalik:ufs-gridfs

imports/api/images

import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import { UploadFS } from 'meteor/jalik:ufs';

export const Images = new Mongo.Collection('images');
export const Thumbs = new Mongo.Collection('thumbs');

if(Meteor.isServer) {
    Meteor.publish('thumbs', function(id) {
        return Thumbs.find({
            originalStore: 'images',
            originalId: {
                $in: ids
            }
        });
    })

    Meteor.publish('images', function() {
        return Images.find({});
    })
}

function loggedIn(userId) {
  return !!userId;
}

export const ThumbsStore = new UploadFS.store.GridFS({
  collection: Thumbs,
  name: 'thumbs',
  permissions: new UploadFS.StorePermissions({
    insert: loggedIn,
    update: loggedIn,
    remove: loggedIn
  }),
  transformWrite(from, to, fileId, file) {
    // Resize to 32x32
    const gm = require('gm');

    gm(from, file.name)
      .resize(32, 32)
      .gravity('Center')
      .extent(32, 32)
      .quality(75)
      .stream()
      .pipe(to);
  }
});

export const ImagesStore = new UploadFS.store.GridFS({
    collection: Images,
    name: 'images',
    permissions: new UploadFS.StorePermissions({
        insert: loggedIn,
        update: loggedIn,
        remove: loggedIn
    }),
    filter: new UploadFS.Filter({
        contentTypes: ['image/*']
    }),
    copyTo: [
        ThumbsStore
    ]
});

Meteor.methods({
    upload: function(file) {
        const photo = {
            name: file.name,
            type: file.type,
            size: file.size
        };

        const upload = new UploadFS.Uploader({
            data: file,
            file: photo,
            store: ImagesStore,
            onError: () => {
                console.log('error');
            },
            onComplete: console.log('Completed'),
        });

        upload.start();
    }
})

在我使用 react-dropzone 的组件中:

onDrop(file) {
        UploadFS.selectFile(() => {
            Meteor.call('upload', file)
        })
    }

但是当我尝试将文件放入其中时,它什么也没有显示,并且在我检查了 mongo 命令后,根本没有图像和拇指集合,即使我认为我将它导入到服务器上的 main.js 文件,它不是正在创建中。

【问题讨论】:

    标签: mongodb reactjs meteor image-uploading


    【解决方案1】:

    onDrop 将返回文件列表,而不是单个文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多