2015-02-20 9 views
1

Есть ли способ использовать грозный без перенаправления на пути к/загрузки?Загрузить изображение без перенаправления в экспрессе :(

Как найти в Интернете и в документации ..

HTML

<form action="/upload" enctype="multipart/form-data" method="post"> 
    <input type="file" name="file"> 
    <input type="submit" value="Upload"> 
</form> 

ЯВНОГО

var form = new formidable.IncomingForm(); 
form.parse(req, function(err, fields, files) { 
    console.log(87987) 
    console.log(files) 
    console.log(files.file) 
    // `file` is the name of the <input> field of type `file` 
    var old_path = files.file.path, 
     file_size = files.file.size, 
     file_ext = files.file.name.split('.').pop(), 
     index = old_path.lastIndexOf('/') + 1, 
     file_name = old_path.substr(index), 
     new_path = path.join(process.env.PWD, 'public/uploads/', file_name + '.' + file_ext); 

    fs.readFile(old_path, function(err, data) { 
     fs.writeFile(new_path, data, function(err) { 
      fs.unlink(old_path, function(err) { 
       if (err) { 
        res.status(500); 
        res.json({'success': false}); 
       } else { 
        res.status(200); 
        res.json({'success': true}); 
       } 
      }); 
     }); 
    }); 
}); 

Образ загрузки в ту папку, но я перенаправлен на/дату загрузки годовой th из-за атрибута action = '/ upload' "в элементе формы.

Я хотел бы остаться на той же странице, но когда я пытаюсь изменить «действие» значение, то я не могу отправить изображение на сервер

ответ

0

использования res.redirect или удалить атрибут action от формы до публикации на текущей странице.

http://expressjs.com/api.html#res.redirect

если удалить атрибут action разместить на текущую страницу, то вы должны добавить маршрут, чтобы выразить на эту страницу, чтобы обрабатывать этот post просьбы об

http://expressjs.com/api.html#app.route

если у вас есть проблема с удалением атрибута action, попробуйте использовать action="?" для размещения на текущей странице.

+0

Я попытался удалить действие и вместо него использовать $ http.post, но затем параметр files в form.parse возвращает пустой объект. Поэтому я предполагаю, что когда я использую атрибут action, атрибут action вручную заполняет объект files. Я также думал об использовании res.redirect, поэтому, я думаю, я мог бы использовать req.headers.host + '/ path'. Я надеялся, что кто-то знает о другом, если это не оптимальный метод. Спасибо за ваш ответ, я собираюсь подождать некоторое время, прежде чем выбрать этот – abcf

+0

'$ http.post'? вы используете угловой? если вам нужно использовать ajax для отправки формы, попробуйте использовать 'new FormData', как предложено в этом сообщении: http://stackoverflow.com/questions/10899384/uploading-both-data-and-files-in-one-form- с использованием Ajax- – Timmerz