强大的多文件上传- ENOENT,没有这样的文件或目录
Formidable multi-file upload - ENOENT, no such file or directory
我知道这个问题已经被问过了,但我的头脑已经被我无法让这个工作吹了。我试图上传多个图像到我的服务器与以下代码:
var formidable = require('formidable');
var fs = require('fs');
…
router.post('/add_images/:showcase_id', function(req, res){
if(!admin(req, res)) return;
var form = new formidable.IncomingForm(),
files = [];
form.uploadDir = global.__project_dirname+"/tmp";
form.on('file', function(field, file) {
console.log(file);
file.image_id = global.s4()+global.s4();
file.endPath = "/img/"+file.image_id+"."+file.type.replace("image/","");
files.push({field:field, file:file});
});
form.on('end', function() {
console.log('done');
console.log(files);
db.get("SOME SQL", function(err, image_number){
if(err){
console.log(err);
}
var db_index = 0;
if(image_number) db_index = image_number.image_order;
files.forEach(function(file, index){
try{
//this line opens the image in my computer (testing)
require("sys").exec("display " + file.file.path);
console.log(file.file.path);
fs.renameSync(file.file.path, file.file.endPath);
}catch (e){
console.log(e);
}
db.run( "SOME MORE SQL"')", function(err){
if(index == files.length)
res.redirect("/admin/gallery"+req.params.showcase_id);
});
});
});
});
form.parse(req);
});
通过系统调用打开图像的行工作得很好,但是我继续得到:Error: ENOENT, no such file or directory '/home/[username]/[project name]/tmp/285ef5276581cb3b8ea950a043c6ed51'
通过rename语句。
file.file.path的值为:/home/[username]/[project name]/tmp/285ef5276581cb3b8ea950a043c6ed51
我很困惑,什么都试过了。我做错了什么?
可能是因为目标路径不存在或者您没有写权限。
你得到的错误是由于nodejs中的错误而引起的误导,参见:
- https://github.com/joyent/node/issues/5287
- https://github.com/joyent/node/issues/685
考虑添加:
console.log(file.file.endPath);
在fs.renameSync
调用之前,检查目标路径是否存在并且您的应用程序可写
您声明的表单。因此,请注意,Formidable不能只使用NodeJS就开箱即用。除非您要使用提示模块之类的东西进行输入。如果你正在使用HTML,你需要像Angular、React或Browserify这样的东西来让它访问你的界面。
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- windows文件系统中的nodejs路径错误4058 ENOENT
- 错误:ENOENT,没有这样的文件或目录Node JS
- 当我运行node app.js命令时,它会给我错误`ENOENT,.mime.types上没有这样的文件或目录
- 文件存在但接收ENOENT错误
- 强大的多文件上传- ENOENT,没有这样的文件或目录
- Node JS ENOENT -没有这样的文件或目录
- Angular错误:ENOENT:没有这样的文件或目录
- 错误:ENOENT:没有Angular2和Express.js这样的文件或目录
- AngularJS$resource writeFileSync给出错误:ENOENT:没有这样的文件或目录,打开