What is the problem here?
I have a node js file for file to upload action and another html file
File to upload.js
var formidable = require('formidable');
var http = require('http');
var form = new formidable.IncomingForm();
http.createServer(function(req, res){
form.parse(req, function(err, fields, files){
console.log(files.filetoUpload.path);
});
}).listen(3002);
fileUpload.html
<body>
<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="filetoUpload">
<input type ="submit" value="Upload">
</form>
</body>
Exception has occurred: Error TypeError: Cannot read property 'path' of undefined at d:\CUBIC\UI\asg\1\FileUpload.js:9:39 at IncomingForm. (d:\CUBIC\UI\asg\1\node_modules\formidable\lib\incoming_form.js:105:9) at emitNone (events.js:86:13) at IncomingForm.emit (events.js:185:7) at IncomingForm._maybeEnd (d:\CUBIC\UI\asg\1\node_modules\formidable\lib\incoming_form.js:553:8) at Object.end (d:\CUBIC\UI\asg\1\node_modules\formidable\lib\incoming_form.js:239:12) at IncomingMessage. (d:\CUBIC\UI\asg\1\node_modules\formidable\lib\incoming_form.js:130:30) at emitNone (events.js:86:13) at IncomingMessage.emit (events.js:185:7) at endReadableNT (_stream_readable.js:974:12)
5条答案
按热度按时间cygmwpex1#
它应该是
files.filetoupload.path)
,而您似乎将其错误地编码为files.filetoUpload.path)
(U为大写)。希望这个有用。
hec6srdp2#
根据HTML5的规范,如果您使用JavaScript操作文件上传控件的值字符串,则该控件不应显示所选文件的真实的本地路径,而是由处理文件信息的脚本返回的字符串C:\fakepath。
此要求已在Internet Explorer 8中实现-仅当包含控件的页面添加到浏览器的受信任站点集合时,才会显示文件的真实的路径。
如果你想替换假路径,就像这样
这是有道理的;基本上,浏览器正在输入蹩脚的C:\fakepath\ text。幸运的是,我所需要做的就是通过执行一个简单的字符串替换调用来修复这个问题:
您需要在upload.js文件中使用路径模块。请尝试在代码
var path=require('path');
中使用此模块,并使用npm install path
安装路径模块尝试这段代码,你可以看到浏览器的响应和在终端响应.
以
node app.js
运行服务器,并使用http://localhost:8080
上传文件。希望这对您有所帮助。xmakbtuz3#
使用
files.fileupload.path
对我很有效。显然,令人生畏的标签有一点改变。gr8qqesn4#
我在这里加上这个答案,因为我面临着同样的问题。可能会帮助别人。
我用的是
files.file.path
,它在Windows中运行得很好。nnt7mjpx5#
确保输入类型的名称属性值和XXXXX(文件.XXXXX.文件路径)必须相同。如我命名为filetouload