0

Dropbox を使用してアップロードしようとしていますが、何かがうまくいかず、何が原因かわかりません。インターネットでいくつか検索しましたが、何も見つかりませんでした。

これが私のコードです:

if (Meteor.isClient) {
  Template.hello.helpers({
    uploads:function(){
      return Avatars.find();
    },
    images:function(){
      return Images.find();
    }
  });

  var avatarStoreLarge = new FS.Store.Dropbox("avatarsLarge");
  var avatarStoreSmall = new FS.Store.Dropbox("avatarsSmall");

  Avatars = new FS.Collection("avatars", {
    stores: [avatarStoreSmall, avatarStoreLarge],
    filter: {
      allow: {
        contentTypes: ['image/*']
      }
    }
  });

  Template.hello.events({
   'change .fileInput':function(event,template){
     FS.Utility.eachFile(event,function(file){
       var fileObj = new FS.File(file);
       Avatars.insert(fileObj,function(err){
         console.log(err);
       })
     })
   }
  });
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    var avatarStoreLarge = new FS.Store.Dropbox("avatarsLarge", {
      key: "xxxxxxxxxxxxxxx", 
      secret: "xxxxxxxxxxxxxxx", 
      token: "xxxxxxxxxxxxxxx", 
      transformWrite: function(fileObj, readStream, writeStream) {
        gm(readStream, fileObj.name()).resize('250', '250').stream().pipe(writeStream)
      }
    })

    var avatarStoreSmall = new FS.Store.Dropbox("avatarsSmall", {
      key: "xxxxxxxxxxxxxxx", 
      secret: "xxxxxxxxxxxxxxx", 
      token: "xxxxxxxxxxxxxxx",
      beforeWrite: function(fileObj) {
        fileObj.size(20, {store: "avatarStoreSmall", save: false});
      },
      transformWrite: function(fileObj, readStream, writeStream) {
        gm(readStream, fileObj.name()).resize('20', '20').stream().pipe(writeStream)
      }
    })

    Avatars = new FS.Collection("avatars", {
      stores: [avatarStoreSmall, avatarStoreLarge],
      filter: {
        allow: {
          contentTypes: ['image/*']
        }
      }
    })
  });
}

このドキュメントに従って、この例を実行しました。

4

2 に答える 2

0

最初に、次のパッケージがインストールされているかどうかを確認します。

cfs:standard-packages
cfs:dropbox
cfs:gridfs

それらをインストールします。

meteor add cfs:standard-packages
meteor add cfs:dropbox
meteor add cfs:gridfs

ファイル「client/collections_client/avatar.js」が次のようになっていることを確認してください。

Template.hello.helpers({
  'imageToShow': function(){
      return Images.find()
      },
});

var dataStorage = new FS.Store.Dropbox("imageData");

Images = new FS.Collection("imageData", {
    stores: [dataStorage],
    filter: {
        allow: {
            contentTypes: ['image/*']
            }
        }
    });

Template.hello.events({
  'click #imageToUpload': function(event, template) {
             FS.Utility.eachFile(event, function(file) {
                 Images.insert(file, function (err, fileObj) {});
                 });
             },
});

"client/collections_client/hello.html"

<template name="hello">
  <input type="file" name="teste" id="imageToUpload">
</template>

<body>
{{> hello}}
</body>

アプリを作成したと仮定します:

「サーバー/コレクション_サーバー/avatar.js」

var dataStorage = new FS.Store.Dropbox("imageData", {
    key: "yourAppKey",
    secret: "yourAppSecret",
    token: "youroAuth2Token"
    });

Images = new FS.Collection("imageData", {
    stores: [dataStorage]
    });
于 2016-07-22T11:17:29.733 に答える