0

なぜこのようなことをしているのかわかりませんが、Meteor 用に CollectionFS を使用しており、画像アップローダーがあり、ページにアップロードされたファイルが表示され、一度に約 30 個のファイルしか表示されません。この番号がどこから来たのかわかりませんが、新しいファイルをアップロードするたびに、古いファイルの 1 つが押し出されます。また、画像ファイルを他のタイプから分離して別の方法で表示できるようにする if ヘルパー ブロックがありますが、アップロードされた順序だけでなく、常に他のファイル タイプを最初に表示し、次に画像を表示します。また、約7つしか示しておらず、残りはイメージです。新しいファイルを追加すると、アップロードされたファイルの数に関係なく、他のファイルの 1 つがランダムに削除されることがあります。なぜそうなのかはわかりませんが、私のコードは次のとおりです。

私のHTMLファイル

   {{#each images}}
       {{#if isImage}}
       <a href="#case-image-modal" role="button" data-toggle="modal" data-target="#case-image-modal" data-url="{{this.url}}">
          <img src="{{this.url uploading='/images/uploading.gif' storing='/images/uploading.gif'}}" class="case-image" alt="Case Image">
       </a>
       {{else}}
           <div class="case-file-name-wrapper">
               <p class="case-file-name"><a href="{{this.url download=true}}" title="{{this.name}}" target="_blank"><i class="fa fa-file{{fileType this.type}}-o fa-4x"></i><br><span class="case-pdf-title">{{this.name}}</span></a></p>
           </div>
       {{/if}}
   {{/each}}

挿入のイベント

"change .case-files-input": function(event, template) {

   var caseId = $(".hidden-case-id").val();

   FS.Utility.eachFile(event, function(file) {

     var newFile = new FS.File(file);
     newFile.metadata = {
        userId: Meteor.userId(),
        caseId: caseId,
        createdAt: new Date()
     };

     CaseImages.insert(newFile, function (err, fileObj) {
        if (!err) {
           console.log("Image Inserted successfully!");
        } else {
           console.log("ERROR inserting Case Image: " + err.reason);
        }

     });
   });
}

私のヘルパー

images: function () {
  var files = CaseImages.find({
     'metadata.caseId': this._id
  }, {
     sort: {
        uploadedAt: -1
     },
     limit: 100 // (I set this to 100 because
               //I thought it might override whatever limit is taking place??)
                // Just testing....it didn't help :(
  });

  //console.log(files.fetch());
  return files;

}

私のコレクション.js

var imageStore = new FS.Store.GridFS("images", {
  mongoOptions: {},
  maxTries: 3,
  chunkSize: 1024*1024
});

CaseImages = new FS.Collection("case_images", {
 stores: [
    imageStore
 ],
 filter: {
   maxSize: 1024*1024*6, // in bytes
   allow: {
  extensions: ['png', 'jpg', 'jpeg', 'gif', 'pdf', 'txt', 'bmp', 'docx', 'xlsx']
   }
 }
});

if (Meteor.isServer) {

 FS.debug = true;

 CaseImages.allow({
    insert:function(userId,doc){
      return true;
    },
    update:function(userId,doc,fields,modifier){
      return true;
    },
    remove:function(userId,doc){
      return true;
    },
    download:function(){
      return true;
    }
 });
}

この問題に自分のコードがまったく必要かどうかはわかりません。それがCFSのデフォルトの動作であるかどうかわからないためです。誰かが私の問題を見つけたり、説明したように動作する理由を説明したりできますか? 私はそれを修正することはできません。

4

0 に答える 0