首页 > 解决方案 > 连接节点应用程序和服务器+将图像发布到服务器

问题描述

我有一个关于节点应用程序的非常基本的问题,还有一个关于 HTTP 请求的问题。这是我第一次使用服务器创建节点应用程序,但我似乎无法让不同的组件一起工作。

这是我的 server.js

var express = require('express');
var multer = require('multer');
const request = require('request');

const upload = multer({dest: __dirname + '/uploads/images'});

const app = express();
const PORT = 3000;

app.use(express.static('public'));

app.post('/upload', upload.single('photo'), (req, res) => {
    if(req.file) {
        res.json(req.file);
    }
    else throw 'error';
});

app.listen(PORT, () => {
    console.log('Listening at ' + PORT );
});

然后我有一个带有运动检测系统的文件 app.js。每次检测到运动时,都会拍摄一张照片。这一切都很好。然后应该将图片发送到服务器。这是我想不通的。我创建了一个toServer()应该将检测到的数据发布到服务器的函数

const request = require('request');    
function toServer(data) {
      const formData = {
      // Pass data via Buffers
      my_buffer: data,
      // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS}
      // Use case: for some types of streams, you'll need to provide "file"-related information manually.
      // See the `form-data` README for more information about options: https://github.com/form-data/form-data
    
      };
      request.post({url:'http://localhost:3000/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
        if (err) {
          return console.error('Upload failed:', err);
        }
        console.log('Upload successful!  Server responded with:', body);
      });
    };

问题 1:在 localhost:3000 上运行 server.js 时,找不到 index.html 和我的 app.js 中加载的任何脚本。 问题 2:在实时服务器上运行 index.html 时,找到所有脚本,但我收到错误“未定义请求”。

我很确定我缺少一些基本的节点设置。的解决方案toServer()可能更复杂。

谢谢你的时间,芥末造型师

标签: javascriptnode.jshttpserver

解决方案


问题1:

这可能是因为您没有指定呈现您的 index.html。例如:

res.render('index') 

如果不是因为 upload.single('photo') 中的单引号,请尝试双引号。

另一个可能的错误可能是您缺少默认的显示引擎设置。一个例子:https ://www.npmjs.com/package/hbs

问题2:可能是因为您缺少标题

var request = require('request');
request.post({
  headers: {'content-type' : 'application/x-www-form-urlencoded'},
  url:     'http://localhost',
  body:    "example"
}, function(error, response, body){
  console.log(body);
});

在https://expressjs.com/上查看更多信息


推荐阅读