我使用express ajax和multer在nodejs中制作了一个图像上传系统。 图像将精确加载到我设置的目的地中,并以我设置的名称加载。问题是,当我转到应该显示上传图片的页面时,它告诉我找不到图片(404未找到)。但是在按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');
}
});
});