node.js - backbonejs Node 文件上传

标签 node.js backbone.js upload

我在任何地方找到的答案都不起作用。我正在尝试扩展“开发 Backbone.js 应用程序”中的示例来上传文件。尽管表单具有 enctype="multipart/form-data",但 request.files 始终未定义。

HTML 表单为:

<form id="addBook" action="..." enctype="multipart/form-data">
    <div>
        <label for="coverImage">CoverImage: </label><input id="coverImage" name="coverImage" type="file" />
        <label for="title">Title: </label><input id="title" type="text" />
        <label for="author">Author: </label><input id="author" type="text" />
        <label for="releaseDate">Release date: </label><input id="releaseDate" type="text" />
        <label for="keywords">Keywords: </label><input id="keywords" type="text" />
        <button id="add">Add</button>
  </div>
</form>

保存新记录的主干是

  addBook: function( e ) {
    e.preventDefault();

    var formData = {};
    var reader = new FileReader();
    $( '#addBook div' ).children( 'input' ).each( function( i, el ) {
        if( $( el ).val() != '' )
        {
            if( el.id === 'keywords' ) {
                formData[ el.id ] = [];
                _.each( $( el ).val().split( ' ' ), function( keyword ) {
                    formData[ el.id ].push({ 'keyword': keyword });
                });
            } else if( el.id === 'releaseDate' ) {
                formData[ el.id ] = $( '#releaseDate' ).datepicker( 'getDate' ).getTime();
            } else {
                formData[ el.id ] = $( el ).val();
            }
        }
    });
        console.log(formData);
        this.collection.create( formData );
    }

被调用的 Node 。

//Insert a new book
app.post( '/api/books', function( request, response ) {
    console.log(request.body);
    console.log(request.files);
});

发送到 Node 的 coverimage 的值是正确的,我只是从未在 request.files 中得到任何内容。我有一个很酷的拖放功能,我想用它来代替,但在我开始使用它之前,我陷入了困境。

我尝试了 JQuery-file-upload,但没有成功。

如果我有头发,我现在就会把它拔掉。

最佳答案

我不会将文件作为 model.save/collection.create(model) 的一部分提交。

我用的是Plupload对于文件上传管理器,将文件提交给上传处理程序。此上传处理程序要么返回上传文件的路径,要么返回 fileId(如果引用存储在数据库表中)。

从那里,我在主干模型中填充一个属性,然后保留该模型。您可以让您的模型 listenTo plupload,用于上传完成事件或类似事件。

关于node.js - backbonejs Node 文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903239/

相关文章:

javascript - 使用 nodeJs 进行路由后无法加载 CSS 和其他脚本的问题

javascript - 快速验证器总是无效

javascript - javascript 中的每个函数调用实际上都是一个新线程吗?

node.js - 从 Node.js 中的 Azure keyvault 获取正确的 pfx 文件

javascript - 如何从 view1 访问对象/var,但在 Backbone js 的 view2 中实例化?

jquery - BlueImp JQuery 上传上传后不清除文件队列

javascript - 创建后销毁 Backbone.Router 和所有副作用

backbone.js - "Uncaught TypeError: Object [object Object] has no method ' off '"在移动到主干 0.9.10 时使用事件错误

php - 在 IMG 标签中回显图像路径

swift - 跟踪totalBytesSent会阻止动画几秒钟