2011-12-12 5 views
5

Im tải lên hình ảnh với kết nối biểu mẫu. Nhưng nó không hoạt động nếu tôi sử dụng bodyParser(). Và cách khác xung quanh, nếu tôi không sử dụng bodyParser, tôi không thể tải lên tập tin?Expressjs bodyParser và dạng kết nối

Tôi làm cách nào để chúng phát cùng nhau? Đây là cấu hình của tôi:

app.configure(function() { 
    app.register('.html', require('ejs')); 
    app.set('views', __dirname + '/../views'); 
    app.set('view engine', 'html'); 
    app.use(gzippo.staticGzip(__dirname + '/../public'),{ maxAge: 86400000 }); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(form({ 
     keepExtensions: true, 
     uploadDir: __dirname + '/../tmp' 
    })); 
    app.use(express.cookieParser()); 
    app.use(express.session({ 
     secret: 'test', 
     cookie: { secure: true }, 
     store: new MySQLSessionStore(client.database, client.user, client.password) 
    })); 
    app.use(expressValidator); 
    app.use(app.router); 
    app.use(express.csrf()); 
}); 

Trả lời

5

Nếu bạn đang sử dụng Express mới nhất, bạn không cần phải bao gồm biểu mẫu kết nối (không được dùng kể từ Kết nối 1.8.x).

Chỉ cần sử dụng req.files trong tuyến đường của bạn để tải các tệp đã tải lên, Express thực hiện phần còn lại. Hãy xem bài đăng này:

http://tjholowaychuk.com/post/12943975936/connect-1-8-0-multipart-support

+0

Oh thats nice :) Nhưng bây giờ tôi gặp sự cố với tên tệp. Với 'req.files.image.filename' tôi lấy tên của hình ảnh trước khi nó được tải lên. Và nó được đổi tên thành một chuỗi ngẫu nhiên hoặc một cái gì đó sau đó. Bộ đó ở đâu? Dường như không tìm thấy bất cứ điều gì về chủ đề này? – georgesamper

+0

Bạn nhận được tên và đường dẫn cho hình ảnh. Chỉ cần di chuyển hình ảnh đó từ vị trí tạm thời sang vị trí mong muốn và bạn tốt để đi :) – alessioalex

+0

Liên kết bị hỏng ngay bây giờ, sẽ tốt hơn nếu đặt câu trả lời ở đây thay vì dán liên kết trong –