Javascript Node.js&;快速文件上传问题
为了克服这一切,我都快发疯了。应该很琐碎,但我显然在做傻事。目标是在Express中上传一个文件。在短请求中。文件在我的路由处理程序中返回为未定义:Javascript Node.js&;快速文件上传问题,javascript,node.js,dropzone.js,Javascript,Node.js,Dropzone.js,为了克服这一切,我都快发疯了。应该很琐碎,但我显然在做傻事。目标是在Express中上传一个文件。在短请求中。文件在我的路由处理程序中返回为未定义: //modules ========================================== // ExpressJS 4.0 used for the middleware and web framework var express = require('express'); var bodyParser = require('bo
//modules ==========================================
// ExpressJS 4.0 used for the middleware and web framework
var express = require('express');
var bodyParser = require('body-parser');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var flash = require('connect-flash');
var jsxml = require("node-jsxml");
var XMLWriter = require('xml-writer');
var request = require("request");
var fs = require('fs');
var app = express();
app.set('views', __dirname + '/views');
app.use(express.static(__dirname + '/public'));
// Did I screw this up??!
app.use(bodyParser({keepExtensions:true,uploadDir: __dirname + '/public/uploads'}));
app.engine('html', require('ejs').renderFile);
app.use(cookieParser('Ronaldinho'));
app.use(session());
app.use(flash());
我的文件系统:
以下是提交文件的表单(通过名为DropZone的插件):
每次上传文件时,我都会点击上面的函数,但发现request.files未定义。以下是控制台上的结果(我使用括号-我感兴趣的是,我甚至从未看到第二个测试击中控制台窗口…):
你知道我搞砸了什么吗?可能是@msdex的副本得奖了-我上传的文件不能由bodyparse处理,busboy工作得很好。
<div id="dropzone">
<form action="/uploads" name="upload" class="dropzone" id="demo-upload" enctype="multipart/form-data" method="post">
<input type="file" name="theFile" />
</form>
</div>
app.post('/uploads', function (request, response) {
console.log('arrived');
console.log('1st TEST: ' + (request.files));
console.log('2nd TEST: ' + request.files.theFile.name);
fs.readFile(request.files.theFile.path, function (err, data) {
var newPath = "/home/path/to/your/directory/"+request.files.theFile.name;
console.log (newPath);
fs.writeFile(newPath, data, function (err) {
res.send("hi");
});
});
});