Considere as respostas mais recentes com informações mais atualizadas, pois as coisas mudaram ao longo dos anos!
Uma vez que muitas novas bibliotecas Node.js estão rapidamente se tornando obsoletas e existem relativamente poucos exemplos de qualquer maneira, eu gostaria de perguntar sobre o upload de imagens usando:
- Node.js (v0.4.1)
- Express (1.0.7)
- Mongoose (1.1.0).
Como os outros fizeram isso?
Eu descobri: node formidável , mas sou novo no upload de imagens em geral, então quero aprender coisas gerais e maneiras de fazer isso usando Node.js e Express.
npm install multer --save
e, em seu aplicativo, você pode acessarreq.files.your_file_param_name
e salvar em s3 comaws-sdk
oufs.writeFile(...)
Respostas:
Vou responder minha própria pergunta pela primeira vez. Eu encontrei um exemplo direto da fonte. Por favor, perdoe o pobre recuo. Eu não tinha certeza de como recuar corretamente ao copiar e colar. O código vem direto do Express
multipart/form-data
exemplo no GitHub.fonte
Como você está usando express, basta adicionar bodyParser:
então sua rota terá acesso automático ao (s) arquivo (s) carregado (s) em req.files:
Se você nomear o controle de entrada como "todo" assim (em Jade):
Então, o arquivo enviado estará pronto quando você obtiver o caminho e o nome do arquivo original em 'files.todo':
outras propriedades req.files úteis:
fonte
bodyParser
é inseguro, pelo menos de acordo com isso: andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html . A resposta de Jon J funcionou para mim.Você pode configurar o middleware do analisador de corpo de conexão em um bloco de configuração no arquivo principal do aplicativo:
fonte
Veja, a melhor coisa que você pode fazer é apenas enviar a imagem para o disco e salvar a URL no MongoDB. Descanse ao recuperar a imagem novamente. Basta especificar o URL e você obterá uma imagem. O código para upload é o seguinte.
Agora salve o caminho de destino em seu banco de dados MongoDB.
Novamente, ao recuperar a imagem, apenas extraia a URL do banco de dados MongoDB e use-a neste método.
fonte
Tente este código. Ele ajudará.
fonte
util.pump(ins, ous)
está depreciado, isso poderia ser feitoins.pipe(ous);
agora. Mas isso removerá o arquivo de imagem do local antigo?Você também pode usar o seguinte para definir um caminho onde o arquivo será salvo.
fonte
I criado um exemplo que usa Express e Multer. É muito simples e evita todos os avisos do Connect
Pode ajudar alguém.
fonte
bodyParser
(o que é inseguro, consulte andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html )Novamente, se você não quiser usar bodyParser, o seguinte funciona:
fonte
Para Express 3.0, se você deseja usar os eventos formidáveis, deve remover o middleware multipartes, para que possa criar a nova instância dele.
Para fazer isso:
Pode ser escrito como:
E agora crie o objeto de formulário:
Eu também postei isso no meu blog, Obtendo um objeto de formulário formidável no Express 3.0 no upload .
fonte
Eu sei que a pergunta original era relacionada a versões específicas, mas também se referia à "última" - a postagem de @JohnAllen não é mais relevante devido a Expressjs bodyParser e connect-form
Isso demonstra o bodyParser () embutido, fácil de usar:
fonte
Este é o meu método para upload de vários arquivos:
Nodejs:
Certifique-se de que seu formulário tenha enctype = "multipart / form-data"
Espero que isso lhe dê uma mão;)
fonte
Esta é uma maneira de fazer upload de suas imagens usando o pacote formidável, que é recomendado em vez do bodyParser nas versões posteriores do Express. Isso também inclui a capacidade de redimensionar suas imagens na hora:
Do meu site: Carregando e redimensionando imagens (em tempo real) com Node.js e Express .
Aqui está a essência:
NOTA: Isso requer Image Magick para o redimensionamento rápido do polegar.
fonte