【问题标题】:upload file with a form via ajax nodejs express通过 ajax nodejs express 上传带有表单的文件
【发布时间】:2013-06-05 14:31:28
【问题描述】:

这是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.');
}

文件没有上传,服务器上的信息什么都没有显示,什么都没有发生

【问题讨论】:

  • "exports.newProduct" 你是在哪里添加这条路由来表达的?
  • app.post('/newProduct',routes.newProduct);

标签: javascript jquery ajax node.js


【解决方案1】:

仅适用于 html5 formData 对象,您需要手动将文件附加到该对象:

New Tricks in XMLHttpRequest2

uploading files with ajax

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

jQuery File Upload

【讨论】:

  • 是的,您可以使用window.formData,并且最新的浏览器支持它。与 iframe 合影是一个古老的技巧。我建议您阅读我发布的链接。
【解决方案2】:

您不能(据我了解)使用 $.ajax 执行 multipart/form-data 表单提交(除非手动构建 POST 正文)。 Express 文件上传要求您的 HTML <form> 元素具有 enctype="multipart/form-data" 属性集。设置好了吗?

对于您正在尝试执行的操作,您可能希望使用隐藏的 iframe 来执行发布,然后让服务器返回一个 javascript sn-p 以成功/失败进行回调。有许多 jQuery 插件可以为您执行此操作(我相信jQuery Form 会执行此操作)。

【讨论】:

  • 我在表单 enctype="multipart/form-data" 中设置,并在 ajax 中设置但在服务器中有错误
猜你喜欢
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
相关资源
最近更新 更多