当前位置: 首页 > 知识库问答 >
问题:

如何使用nodejs在服务器上上载文件

班言
2023-03-14

我花了几个小时试图将文件上载到本地服务器文件夹upload,但比预期的困难,请帮助。

在我的前端下面插入文件form.hbs

<form action="/editcrew/" method="POST" encType="multipart/form-data" novalidate></form>
<input type="file" name="profile_image">
<button class="btn btn-primary" type="submit" style="margin:90px 0 0 0">Submit</button>
 

下面是我的控制器导出。更新位于文件userController内的。js,它成功地将文件名插入MySql数据库。

exports.update = (req, res) => {
    
    const { first_name, last_name, profile_image } = req.body;

   

    connection.query('UPDATE user SET first_name=? ,last_name=?, profile_image=? ', [first_name, last_name, profile_image, req.params.id], (err, rows) => {
        if (!err) {
            connection.query('SELECT * FROM user WHERE id = ?', [req.params.id], (err, rows) => {
                //when done with the connection release it
                // connection.release();
                if (!err) {
                    res.render('edit-crew', { rows, alert: `${first_name} has been updated.` });
                } else {
                    console.log(err);
                }
                console.log('The data from user table:\n', rows);
            });
        } else {
            console.log(err);
        }
        console.log('The data from user table:\n', rows);
    });
};

下面是用于post请求的路由器。

router.post('/editcrew/:id',userController.update);
const express = require("express");
const exphbs = require("express-handlebars");
const fileUpload = require('express-fileupload');

// const userContoller = require('./controllers/userController')
// to be removed when deployed in heroku

require("dotenv").config();
const cookieParser = require('cookie-parser');



// Parsing middleware
const app = express();

// default option
app.use(fileUpload());

//to load static file
app.use(express.static("public"));
app.use(express.static("upload"));
//Listen on port 5000
app.use(express.urlencoded({ extended: false })); //To parse URL-encoded bodies (as sent by HTML forms)

app.use(express.json()); //To parse the incoming requests with JSON bodies
app.use(cookieParser());

app.engine("hbs", exphbs({ extname: ".hbs" }));//Templating engine to change the extenion of file from .handlebar to .hbs
app.set("view engine", "hbs");


//link which tell to the server express.js to get the routeing from user.js
// const routes = require('./server/routes/user');
app.use("/", require('./routes/user'));
app.use('/auth', require('./routes/auth'));


const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Listening on port ${port}`));

我的目标是让控制器update不仅在MySql数据库中插入名称文件,而且还将文件上载到本地文件夹/upload


共有1个答案

叶修永
2023-03-14

如果您只想将文件上载到服务器并保存文件。我建议您在expressjs中使用“multer”。如果你需要额外的功能,你可以自定义它。您可以阅读文档并开始使用它。这是医生

 类似资料:
  • 我正在尝试上传一个图像。当我从本地主机上进行时,它工作得很好,但当我发布它时,它从服务器上抛出一个错误: 当我使用此代码时: 错误为: System.io.DirectoryNotFoundException:找不到路径“d:\inetpub\vhosts\xx.com\httpdocs\images\sections\developer\clientlogo\demo.png”的一部分。在sys

  • 问题内容: 在解决如何创建socket.io多播组的问题上取得进展之后,我发现将房间作为完成我需要的工作的好方法。 但是,很高兴知道所有房间,而无需额外的数据结构。 是否可以从服务器套接字获取服务器上所有房间的列表? 问题答案: 简短的答案: 我分析了: 我得到以下输出: 从单个客户加入“ public-alfred”会议室后,其中包含:

  • 问题内容: 我正在设置标头和正文,使用Post提取将图像上传到服务器上。我得到的响应码是200,但它不是上传图像,而是其余数据正在上传。 这是正文的代码: 请帮助。我正在犯什么错误。:( 问题答案: 我找到了解决方案: **文件名是可选的…

  • 我需要一些上传图像的帮助。 我有两个不同的申请 在我的专用服务器上运行的Springstart应用程序 Angulal-6 Application-在我的云服务器上运行 我需要从我的spring boot应用程序上传一个图像到Angular-6资产文件夹(资产文件夹类似于spring boot应用程序的资源文件夹) 在application.properties我已经声明上传位置,如profile

  • 我有一个专用的服务器上,我目前正在运行4个PHP网站。服务器配置为Apache+Nginx。每当我托管php网站时,我将文件放在public_html文件夹中,它就会开始运行。但现在我想安装nodejs应用程序。我只是对如何处理server.js文件感到困惑?又如何让它继续运行?我应该使用pm2还是永远保持它在我的ubuntu主机上永远运行。如何运行域名为example.com的网站

  • 我有一个在Liberty WebSphere Server 17.0.0.2上使用AngularJSP的项目,现在我必须对其进行升级。该项目需要升级到Angular 4 Liberty,我不知道如何正确地完成。 我现在尝试过的是: 使用角度 CLI 生成项目以生成分离文件夹。然后,我把这个分歧放在网络-INF上 提前感谢。