通过ajax nodejs express上传带有表单的文件

时间:2013-06-09 23:53:01

标签: javascript jquery ajax node.js

这是ajax文件

$(form).submit(function()
            {
                $.ajax(
                {
                    url:'/newProduct',
                    cache: false,
                    type: 'POST',
                    data: $(form).serialize(),
                    success:function(datos)
                    {
                        console.dir(datos)
                    },
                    error:function(xhr,tm)
                    {

                    },
                    complete:function()
                    {
                        form.reset();

                    }
                })
return false        

            });

这在服务器上

exports.newProduct=function(req,res)
{
    console.dir(req.body)
    console.dir(req.files)
    return res.send('Producto Cargado correctamente.');
}

文件没有上传,服务器上的信息什么也没显示,没有任何事情发生

2 个答案:

答案 0 :(得分:3)

你不能(据我所知)使用$.ajax来执行 multipart / form-data 表单提交(不是没有手动构建POST主体)。 Express文件上传要求您的HTML <form>元素设置enctype="multipart/form-data"属性。你准备好了吗?

对于您尝试做的事情,您可能希望使用隐藏的iframe来执行帖子,然后让服务器返回一个回调成功/失败的javascript片段。有很多jQuery插件可以帮到你({3}}这样做,我相信。)

答案 1 :(得分:1)

仅使用html5 formData对象,您需要手动将文件附加到其中:

New Tricks in XMLHttpRequest2

uploading files with ajax

你可以使用jQuery nice插件,例如fallback等:

jQuery File Upload