gpt4 book ai didi

javascript - 使用 Express-fileupload - Node.js 上传文件时没有这样的文件或目录错误

转载 作者:行者123 更新时间:2023-11-30 20:36:31 27 4
gpt4 key购买 nike

我目前正在尝试上传一个 pdf 文件,将该文件以我可以查询的名称存储在我的目录中,并将该名称存储在 SQL 表中。我正在使用 Express-fileupload,并且正在获取文件,但是当我尝试使用 .mv 移动文件时,我收到了 Error: ENOENT: no such file or directory, open '/public/files/CLPs/minor_CLP.pdf' 错误。这是我的发布功能的代码:

app.post('/uploadCLP', isLoggedIn, function(req, res) {
var communityID = req.user.communityID;

console.log(req.files);

var clpFile = req.files.clpFile;
var clpName = communityID + "_CLP.pdf";

clpFile.mv('/public/files/CLPs/' + clpName, function(err) {
if(err)
return console.log(err);
});

var updateQuery = ("UPDATE Community SET clpFile = ? WHERE communityID = ?");
connection.query(updateQuery, [clpName, communityID], function(err, rows) {
if(err) throw err;
res.redirect(302, '/proposal');
});
});

下面是调用该函数的 EJS 文件中的表单:

<div class="well">
<form action="/uploadCLP" method="post" enctype="multipart/form-data">
<div class="form-group">
<label>Community Learning Plan</label>
<p>Only upload Community Learning Plans in PDF format.</p>
<input type="file" accept=".pdf" class="form-control" name="clpFile">
</div>
</div>

编辑以显示我的 server.js 文件:

// server.js

// get all the tools we need
var express = require('express');
var session = require('express-session');
var favicon = require('express-favicon');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var morgan = require('morgan');

var upload = require('express-fileupload');
var app = express();
var port = process.env.PORT || 1848;

var passport = require('passport');
var flash = require('connect-flash');


require('./config/passport')(passport); // pass passport for configuration

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

// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());

app.set('view engine', 'ejs'); // set up ejs for templating
app.use(upload());

// required for passport
app.use(session({
secret: 'vidyapathaisalwaysrunning',
resave: true,
saveUninitialized: true
} )); // session secret

app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session


require('./app/routes.js')(app, passport);

app.listen(port);
console.log('Server running on port ' + port);

另外,你可以在这里看到我的项目目录:

enter image description here

我不确定问题是出在我如何设置文件保存目录,还是出在我试图以不同的名称保存文件。任何帮助或提示将不胜感激! :)

最佳答案

因为路径一开始使用的是/,所以它会搜索那个文件夹的根路径,而不是项目文件夹本身。

因为脚本在项目的根目录下,所以正确的路径应该是'public/files/CLPs/'

关于javascript - 使用 Express-fileupload - Node.js 上传文件时没有这样的文件或目录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49785890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com