2015-01-21 3 views
0

Можно ли добавить условие для каждого FS.Store для Meteor CollectionFS?Meteor CollectionFS, состояние для каждого магазина?

Я ищу, чтобы сделать какую-то функцию, чтобы сделать чек перед каждым FS.Store, и если он терпит неудачу, просто не загружайте вообще.

Например, я пытаюсь проверить, является ли загружаемое изображение определенным размером. Если это не так, я хотел бы прекратить работу с загрузкой для этого FS.Store.

ответ

0

CollectionFS используется для обеспечения эффективного способа загрузки из файла, url, blob и т. Д. На хранилище, таких как данные, GridFS, S3 и т. Д. Процесс проверки данных, которые вы отправляете на сервер, должен быть обработан до загрузки данных в Сборник.

, так как CollectionFS поддерживает несколько видов данных, вы могли бы (или не могли) фильтровать контент перед их загрузкой.

  • объект File (только клиент) // ДА
  • Blob объект (только клиент) // ДА
  • Uint8Array // ДА
  • данных URI строка // YES
  • Полный URL который начинается с «http:» или «https:» // НЕТ, не применимо
  • Локальный путь к файлу (только для сервера) // НЕТ (только для сервера)
  • Буфер ArrayBuffer (только для сервера) // НЕТ (только для сервера)

Причина очень проста, в шаблоне вы можете ENUM на файл, который вы готовы загрузить:

Template.myForm.events({ 
    'change .myFileInput': function(event, template) { 
    FS.Utility.eachFile(event, function(file) { 
     // Test here what you want to test on "file", return if the test failed 
     Images.insert(file, function (err, fileObj) { 
     }); 
    }); 
    } 
}); 

Если вы загружаете из URL, вы, очевидно, не может проверить содержимое, прежде чем загрузить Контент…. Если вы загружаете файл, blob, строку URL-данных данных, Uint8Array, данные все еще находятся на стороне клиента, ваша работа заключается в анализе и предоставлении или отказе от загрузки.

Смежные вопросы