【发布时间】:2020-01-26 09:46:47
【问题描述】:
我在使用 ejs 的 nodejs 中遇到“找不到文档”的问题。我想使用“输入类型 = 文件”从客户端读取文件并将文件数据获取到我的服务器。
/=======Nodejs 代码:======/
router.get('/upload',(req,res)=>{
const fileData= document.getElementById('uploadForm').files[0].path;
fs.readFile(fileData,(err,data)=>{
if(err) throw err;
// let dataObject =JSON.parse(data);
console.log(data);
});
});
/======Ejs 代码:======/
<form action="/upload" method="POST">
<div class="col-md-6">
Upload License File (XLS / TXT): <input type="file" id="uploadForm" name="uploadForm" >
<button type="submit" class="btn btn-primary" style="margin-top: 10px;border-radius:0;">Upload</button>
</div>
</form>
<script type="text/javascript" src="/routes/index.js">
var x = document.getElementById('uploadForm'); //make sure this tag is below "demo"
</script>
ReferenceError: document is not defined
at Object.<anonymous> (C:\Users\Pranay\Desktop\nodejs_Lic\routes\index.js:101:14)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (C:\Users\Pranay\Desktop\nodejs_Lic\app.js:7:19)
at Module._compile (internal/modules/cjs/loader.js:701:30)
【问题讨论】:
-
您忘记了常量
fileData后面的=符号。 -
您在后端定义了它。 nodejs中没有
document。 -
document大多数时候是浏览器中window全局对象的属性。 Node.js 不在浏览器中运行,也不在 DOM 内容的上下文中运行,因此两者都有“文档”可以使用,因为没有window并且从概念上讲它没有意义. Node 作为后端可以提供任何文档甚至它想要的内容,它甚至不需要是 DOM,而在浏览器中运行的代码是在当前加载的页面的上下文中。 -
表单使用 POST 方法,所以路由器应该监听 POST,而不是 GET:
router.post(...。 -
表单数据应该在 node.js 端的
req.body中可用。另请阅读:stackoverflow.com/questions/9304888/…
标签: javascript node.js ejs