Harap pertimbangkan jawaban lebih baru yang memiliki lebih banyak informasi terkini karena banyak hal telah berubah selama bertahun-tahun!
Karena banyak pustaka Node.js baru dengan cepat menjadi usang dan hanya ada sedikit contoh yang ingin saya tanyakan tentang mengunggah gambar menggunakan:
- Node.js (v0.4.1)
- Ekspres (1.0.7)
- Mongoose (1.1.0).
Bagaimana orang lain melakukannya?
Saya telah menemukan: node-formidable , tetapi saya baru dalam mengunggah gambar secara umum jadi saya ingin mempelajari hal-hal umum dan cara melakukannya menggunakan Node.js dan Express.
npm install multer --save
dan kemudian di aplikasi Anda, Anda dapat mengaksesreq.files.your_file_param_name
dan menyimpan ke s3 denganaws-sdk
ataufs.writeFile(...)
Jawaban:
Saya akan menjawab pertanyaan saya sendiri untuk pertama kalinya. Saya menemukan contoh langsung dari sumbernya. Mohon maafkan indentasi yang buruk. Saya tidak yakin bagaimana cara membuat indentasi dengan benar saat menyalin dan menempel. Kode tersebut berasal langsung dari
multipart/form-data
contoh Express di GitHub.sumber
Karena Anda menggunakan express, cukup tambahkan bodyParser:
maka rute Anda secara otomatis memiliki akses ke file yang diunggah di file req.file:
Jika Anda memberi nama kontrol input "rencana" seperti ini (di Jade):
Kemudian file yang diunggah sudah siap pada saat Anda mendapatkan jalur dan nama file asli di 'files.todo':
properti req.files berguna lainnya:
sumber
bodyParser
tidak aman, setidaknya menurut ini: andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html . Jawaban Jon J berhasil untuk saya.Anda dapat mengonfigurasi middleware connect body parser di blok konfigurasi di file aplikasi utama Anda:
sumber
Lihat, hal terbaik yang dapat Anda lakukan adalah mengunggah gambar ke disk dan menyimpan URL di MongoDB. Beristirahatlah saat Anda mengambil kembali gambar itu. Cukup tentukan URL, dan Anda akan mendapatkan gambar. Kode untuk mengupload adalah sebagai berikut.
Sekarang simpan jalur target di database MongoDB Anda.
Sekali lagi, saat mengambil gambar, cukup ekstrak URL dari database MongoDB, dan gunakan pada metode ini.
sumber
Coba kode ini. Ini akan membantu.
sumber
util.pump(ins, ous)
disusutkan, ini bisa dilakukanins.pipe(ous);
sekarang. Tetapi apakah ini akan menghapus file gambar di lokasi lama?Anda juga dapat menggunakan yang berikut ini untuk menyetel jalur penyimpanan file.
sumber
Saya membuat contoh yang menggunakan Express dan Multer. Ini sangat sederhana dan menghindari semua Connect peringatan
Ini mungkin membantu seseorang.
sumber
bodyParser
(yang tidak aman, lihat andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html )Sekali lagi jika Anda tidak ingin menggunakan bodyParser, berikut ini berfungsi:
sumber
Untuk Express 3.0, jika Anda ingin menggunakan peristiwa hebat, Anda harus menghapus middleware multi bagian, sehingga Anda dapat membuat instance baru darinya.
Untuk melakukan ini:
Dapat ditulis sebagai:
Dan sekarang buat objek formulir:
Saya juga telah memposting ini di blog saya, Mendapatkan objek formulir yang tangguh di Express 3.0 saat diunggah .
sumber
Saya tahu bahwa pertanyaan asli terkait dengan versi tertentu, tetapi juga merujuk ke "terbaru" - kiriman @JohnAllen tidak lagi relevan karena Expressjs bodyParser dan connect-form
Ini mendemonstrasikan bodyParser () built-in yang mudah digunakan:
sumber
Ada metode saya untuk mengupload banyak file:
Nodejs:
Pastikan formulir Anda memiliki enctype = "multipart / form-data"
Saya harap ini membantu Anda;)
sumber
Berikut adalah cara untuk mengupload gambar Anda menggunakan paket yang hebat, yang direkomendasikan melalui bodyParser di versi Express yang lebih baru. Ini juga termasuk kemampuan untuk mengubah ukuran gambar Anda dengan cepat:
Dari situs web saya: Mengunggah dan Mengubah Ukuran Gambar (dengan cepat) Dengan Node.js dan Express .
Inilah intinya:
CATATAN: Ini membutuhkan Image Magick untuk mengubah ukuran ibu jari dengan cepat.
sumber