express - node express multer fast-csv pug 文件上传
问题描述
我尝试使用 pug、multer 和 express 上传文件。
哈巴狗形式看起来像这样
form(method='POST' enctype="multipart/form-data")
div.form-group
input#uploaddata.form-control(type='file', name='uploaddata' )
br
button.btn.btn-primary(type='submit' name='uploaddata') Upload
服务器代码如下所示(脱离上下文)
.post('/uploaddata', function(req, res, next) {
upload.single('uploaddata',function(err) {
if(err){
throw err;
} else {
res.json({success : "File upload sucessfully.", status : 200});
}
});
})
我的问题是,虽然文件上传成功,但成功消息未显示在同一页面上,即:加载新页面显示
{success : "文件上传成功。", status : 200}
作为其他元素(链接点击)的示例,消息通过此类 javascript 显示:
$("#importdata").on('click', function(){
$.get( "/import", function( data ) {
$("#message").show().html(data['success']);
});
});
我尝试使用纯 javascript 来解决默认表单行为,但没有运气。
解决方案
您的问题与混合表单提交和 AJAX 概念有关。具体来说,您正在提交一个表单,然后返回一个适合 AJAX API 的值。您需要选择其中一个才能正常工作。
如果您选择将此作为您无法使用的表单提交res.json
,您需要切换到res.render
或res.redirect
改为再次呈现该页面。您正在确切地看到您告诉 node/express 做什么res.json
- JSON 输出。渲染或重定向是您想要在此处执行的操作。
这是关于表单的 MDN入门,也是express.js 的特定教程。
或者,如果您选择使用 AJAX API 处理此问题,则需要在浏览器中使用 jquery、fetch、axios 或类似工具来发送请求并处理响应。这不会导致页面重新加载,但您确实需要以某种方式处理响应并修改页面,否则用户只会坐在那里想知道发生了什么。
MDN 有一本很棒的 AJAX 入门书,可以帮助您从那里开始。如果您要走这条路,还请确保您阅读了restful API 设计。
这两种方法本质上都不是更好的策略,两种方法都用于大规模生产应用。但是,您确实需要选择其中一个,而不是像上面那样混合它们。
推荐阅读
- r - 查找包含一系列字符的字符串,而不管 r 中的顺序如何
- sql-server - 转换和重复多行
- css - React CSS 之谜:@import 仅在 index.css 底部有效
- html - 我正在尝试添加一些
- 元素,但列表永远不会出现
- python - 主窗口打开对话框窗口上的 PyQt4 设计器按钮
- ios - 不能用“item”类型的索引为“[item]”类型的值下标
- sas - 在 SAS 中进行主数据分析的正确方法
- keras - Keras 中的双向包装器出错
- c# - 如何设置在 Linux 上开发 Mono C# iPhone 应用程序的环境?
- html - 材料设计组件选择菜单无法正确呈现网页