javascript - 连接节点应用程序和服务器+将图像发布到服务器
问题描述
我有一个关于节点应用程序的非常基本的问题,还有一个关于 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()
可能更复杂。
谢谢你的时间,芥末造型师
解决方案
问题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/上查看更多信息
推荐阅读
- python - 熊猫为每个时间箱分配组号
- swiftui - 使用 SwiftUI 等高子视图
- python - 如何通过基于 previos 列添加新列来迭代和计算成行?
- google-apps-script - 验证 Google App Script 中的特定字符串
- android - 指南针和我的位置按钮在地图上的位置颤动
- jboss - jboss_cli 活动会话详细信息
- php - 当用户在 Laravel 中更新电子邮件地址时发送电子邮件激活(确认)链接
- java - 使用带有限定符的相同接口弹出太多构造函数参数
- google-cloud-platform - 为什么 Google Compute Engine 没有运行我的容器?
- android - TcpClient.ConnectAsync 和 TcpClient.BeginConnect 在 Xamarin.Forms Android 应用程序中始终返回 true