我有一个项目正在努力完成我想上传图像
我可以上传图像,但不能上传应该上传的空中图像
好的,让我们编写代码:
app.post('/register',function(req,res)
{
var form = new formidable.IncomingForm();
form.keepExtensions = true;
form.uploadDir ='./uploaded/';
form
.on('error', function(err) {
throw err;
})
.on('field', function(field, value) {
//receive form fields here
})
/* this is where the renaming happens */
.on ('fileBegin', function(name, file){
//rename the incoming file to the file's name
file.path = form.uploadDir + "/" + file.name;
})
.on('file', function(field, file) {
//On file received
})
.on('progress', function(bytesReceived, bytesExpected) {
//self.emit('progess', bytesReceived, bytesExpected)
var percent = (bytesReceived / bytesExpected * 100) | 0;
process.stdout.write('Uploading: %' + percent + '\r');
})
.on('end', function() {
});
form.parse(req);
问题是,当我发布图像时......图像仍然保存在 process.env.TMP 上
我的项目有这个目录 arq
proyect:
node_modules
uploaded
public
routes
views
app.js
package.json
编辑2:问题是BODYPARSER
从最后的代码来看,问题是 app.js,当我配置应用程序时,它有一个 bodyParser,以便 bodyParser 方法使用来自 Express 的强大功能
最后的代码是正确的并且功能齐全,如果有人想使用该代码...只需注释来自express.configure的行
app.use(express.bodyParser());
关闭 Express Bodyparser 但 Express 使用也很强大,所以是同样的事情......
还有一个问题
我像这样配置express.bodyParser
app.use(express.bodyParser(
{
uploadDir: './uploads',
keepExtensions: true
}));
我像这样更改第一个代码
app.post('/register',function(req,res)
{
var oldDir=req.files.img.path;
var newDir='./uploads/'+req.body.email+'/perfil/';
if(req.files)
{
mkdirp(newDir,0777,function(err){
if(err) throw err;
})
}
if(req.files)
{
fs.rename(oldDir,newDir+req.files.img.name,function(err){
if(err) throw err;
});
}
res.send('pow!');
它的功能是,当此代码收到文件时,将文件放入上传文件夹中,然后使用电子邮件名称创建文件夹,最后将文件移动到电子邮件文件夹中,并将其重命名为带有扩展名的原始文件
这是完美的”!
不,没有完美...我想用这个方法
.on ('fileBegin', function(name, file){
//rename the incoming file to the file's name
file.path = form.uploadDir + "/" + file.name;
})
.on('progress', function(bytesReceived, bytesExpected) {
//self.emit('progess', bytesReceived, bytesExpected)
var percent = (bytesReceived / bytesExpected * 100) | 0;
process.stdout.write('Uploading: %' + percent + '\r');
})
因为从第一个代码我可以配置从头开始放置文件的位置
在第二个代码中,我在服务器收到文件后移动文件
我认为该方法是在express中,因为express使用像中间件一样强大的功能
我如何配置该方法?
方法在哪里......?'?
我如何从第二个代码中知道 req.files 中包含的方法?
(因为使用 bodyParser() 的 req.files 与第一个代码中使用 formidable 的 form.file 相同)
tnx all