у меня есть проект, который я пытаюсь закончить, я хочу загружать изображения, я могу загружать изображения, но не в каталог, который предполагается загружать
хорошо, давайте код:
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.configure
app.use(express.bodyParser());
отключить экспресс-парсер тела, но экспресс-использование тоже грозно, так что то же самое...
есть еще одна проблема
я настраиваю 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');
})
потому что из первого кода я могу настроить, куда поместить файл с самого начала, во втором коде я перемещаю файл после того, как сервер получит файл
я думаю, что метод экспресс, потому что экспресс-использование грозно, как промежуточное ПО
как я могу настроить метод на ??
где метод...?'?
как я могу узнать методы, содержащиеся в req.files из второго кода?? (потому что req.files, использующие bodyParser(), такие же, как form.file, использующие грозный в первом коде)
Спасибо всем