2015-10-24 1 views
0

Я попытался использовать Backbone + ReactJS для создания сайта для загрузки файлов, я использую backbone-model-file-upload, чтобы помочь мне сохранить файл в базовой модели и сохранить в mongodb (использование бэкэнда nodejs + multer)Defferent Запросить содержимое при отправке из Collection.create и нормальной формы

но я нашел некоторые проблемы с этим модулем, , потому что я использовал простую форму для загрузки файла без базовой модели и использовал multer для обработки в backend, и он работал нормально.

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

нормальная форма: enter image description here

магистральная модель с backbone-model-file-upload: enter image description here

Совершенно очевидно, что полезная нагрузка запроса бардак в магистральной модели, не так ли? Почему существуют два Content-disposition? и с неправильным именем имя должно быть именем входа, например

Может ли кто-нибудь знать, что происходит?

Я не уверен, если я посмотрю в нужное место, скажите, пожалуйста, если я ошибаюсь, и я оценил вашу помощь.

спасибо.

ответ

0

Хорошо ... после пары часов страданий, я выяснить, что произошло, это довольно просто на самом деле ...

Оказывается, в Введите имя в multer({ storage: storageConfig }).single('Input Name') должен совпадать с атрибутом магистральной модели (ключ)

, например, если мой позвоночник модель выглядит

app.File = Backbone.Model.extend({ 
    idAttribute : '_id', 
    urlRoot: '/db/collections', 
    fileAttribute: 'uploadFile', 
    defaults: { 
     _id: null, 
     title: '' 
    } 
}); 

тогда, мой multer должно выглядеть

`multer({ storage: storageConfig }).single('uploadFile')` 

и причины, когда вы пытаетесь создать и сохранить модель в коллекции, вы должны указать одинаковое значение атрибута

, например:

var file_data = $(".new-file").prop("files")[0]; // Getting the properties of file from file field 
     var fileName = $(".new-file").val().split('/').pop().split('\\').pop(); 
      if (fileName) { 
      this.props.files.create({ 
       title: fileName, 
       uploadFile: file_data 
      },{ formData: true , wait: true}); 
      ReactDOM.findDOMNode(this.refs.newField).value = ''; 
     } 

Вот и все.

Но я не уверен, что это нормально, чтобы получить req.body в этом решении. Я уточню позже, если я это выясню.

Спасибо.