node.js - Node/Express Multer 上传系统不加载上传的文件
问题描述
我使用 express ajax 和 multer 在 nodejs 中制作了一个图像上传系统。图像完全加载到我设置的目的地和我设置的名称。问题是当我转到应该显示上传图片的页面时,它告诉我它没有找到它们(404 NOT FOUND)。但是在我按下 CTRL + F5 之后,图像就会出现。
上传图片后,当我无需刷新 FTP 或按 CTRL + F5 即可转到应该显示图片的页面时,我该怎么做?
这是我的代码
来自创建配置文件页面的 Ajax 处理程序
$(".b_cr_md").click(function(e){
e.preventDefault();
var v_fm_dt = new FormData();
if (v_fm_dt) {
if ($('.up_im').is(':visible')){
var _image = document.getElementById('imgInp');
var m_nm = $('#m_nm').val();
if (m_nm.length < 1) {
alert('Please select a name');
} else {
v_fm_dt.append('modelname', m_nm);
for ( i = 0 ; i < _image.files.length; i++) {
var file = _image.files[i];
v_fm_dt.append('pictures', file);
}
$.ajax({
url: '/dashboard/actions/models/createmodel/'+m_nm,
type: 'POST',
method: 'POST',
cache: false,
contentType: false,
processData: false,
data: v_fm_dt,
success: function(data){
console.log(data);
}
});
}
} else {
alert("You didn't select the pictures");
}
}
});
路由器功能:
router.post('/actions/models/createmodel/:modelsname', function (req, res, next) {
const name = req.params.modelsname;
const custom_folder = './public/images/models/'+name;
if (!fs.existsSync(custom_folder)){
fs.mkdirSync(custom_folder);
}
var storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, custom_folder);
},
filename: function(req, file, cb){
if (!req.headers.index){
req.headers.index = 1;
}
cb(null, name.toLowerCase() + '_' + (req.headers.index++) + path.extname(file.originalname));
}
});
let upload_im = multer({ storage: storage}).array('pictures', 4);
upload_im(req, res, function(err){
if (err) {
res.send('error');
} else {
res.send('success');
}
});
});