表格是在输入类型=文件中没有选择文件的提交时间

时间:2014-01-27 03:03:50

标签: javascript jquery node.js forms sails.js

有一个简单的表单,如下面的js Fiddle http://jsfiddle.net/UdugW/我将一些表单数据发布到我的node.js应用程序(基于sails.js)。这是product模型中的控制器函数之一:

  image_upload: function(req, res) {
    if (req.method.toLowerCase() == 'post') {
      console.log("request: " + util.inspect(req.body));

      if( req.files && req.files.product_image){
        fs.readFile(req.files.product_image.path, function (err, data) {

          var imageName = req.files.product_image.name;

          if(!imageName){
            console.log("There was an error with image upload : " + util.index(req.files.product_image));
            res.redirect("/product/new_product");
            res.end();
          } else {

            var newPath = UPLOAD_PATH + imageName;

            /// write file to uploads/fullsize folder
            fs.writeFile(newPath, data, function (err) {
              res.writeHead(200, {'content-type': 'text/plain'});
              res.end();
              return;
            }); 
          }   
        }); 
      }   
    }else if (req.body) {
        console.log("product_name: " + product_name);
        console.log("product_price: " + product_price);
        console.log("product_description: " + product_description);
        res.writeHead(200, {'content-type': 'text/plain'});
        res.end();
    }   
    else{
        console.log("request err");
        res.writeHead(500, {'content-type': 'text/plain'});
        res.end();
    }   
  },

当我没有选择要上传的图像时,我遇到了问题,那么我的POST请求就会超时。有什么想法可能会发生吗?

1 个答案:

答案 0 :(得分:3)

9/10使用node.js应用程序,当某些内容超时时,您可能忘记关闭套接字(至少根据我的经验)。在你的情况下,它没有什么不同: - )

问题在于:你有这个if语句

if( req.files && req.files.product_image){

但可怜的家伙没有匹配的else语句:-( 所以如果那个条件不正确......好吧,没有任何反应。执行基本上只是结束,浏览器等待......永远。

只需在其中添加一个带有res.end()的else-statment就可以了。

这样的事情

  if( req.files && req.files.product_image){
      //all the stuff you already have for when it matches
  }else{
    console.log("No files were included in the post");
    res.end();
  }