Saya ingin melakukan posting bentuk multi-bagian sederhana dari AngularJS ke server node.js, formulir tersebut harus berisi objek JSON di satu bagian dan gambar di bagian lain, (saya saat ini hanya memposting objek JSON dengan $ resource)
Saya pikir saya harus mulai dengan input type = "file", tetapi kemudian menemukan bahwa AngularJS tidak dapat mengikat itu ..
semua contoh yang bisa saya temukan adalah untuk membungkus plugin jQuery untuk drag & drop. Saya ingin mengunggah satu file dengan mudah.
Saya baru mengenal AngularJS dan tidak merasa nyaman sama sekali dengan menulis arahan saya sendiri.
angularjs
angularjs-fileupload
Gal Ben-Haim
sumber
sumber
Jawaban:
Solusi kerja nyata tanpa dependensi selain angularjs (diuji dengan v.1.0.6)
html
Angularjs (1.0.6) tidak mendukung ng-model pada tag "input-file" sehingga Anda harus melakukannya dalam "cara asli" yang meneruskan semua (akhirnya) file yang dipilih dari pengguna.
pengontrol
Bagian kerennya adalah tipe konten yang tidak terdefinisi dan transformRequest: angular.identity yang memberi $ http kemampuan untuk memilih "tipe konten" yang tepat dan mengelola batas yang diperlukan saat menangani data multi-bagian.
sumber
fd.append("file", files[0]); fd.append("file",files[1]); fd.append("name", "MyName")
Anda dapat menggunakan arahan unggah file-ng sederhana / ringan . Ini mendukung drag & drop, kemajuan file dan upload file untuk browser non-HTML5 dengan FileAPI flash shim
JS:
sumber
Lebih efisien mengirim file secara langsung.
The base64 encoding dari
Content-Type: multipart/form-data
menambahkan 33% overhead tambahan. Jika server mendukungnya, akan lebih efisien untuk mengirim file secara langsung:Saat mengirim POST dengan objek File , penting untuk mengatur
'Content-Type': undefined
. The XHR mengirim Metode maka akan mendeteksi objek File dan secara otomatis mengatur jenis konten.Untuk mengirim banyak file, lihat Melakukan Banyak
$http.post
Permintaan Secara Langsung dari FileListThe
<input type=file>
unsur tidak oleh pekerjaan default dengan ng-model yang direktif . Perlu arahan khusus :Demo Bekerja dari "select-ng-files" Petunjuk yang Bekerja dengan
ng-model
1$http.post
dengan tipe kontenmultipart/form-data
Jika seseorang harus mengirim
multipart/form-data
:Saat mengirim POST dengan API FormData , penting untuk diatur
'Content-Type': undefined
. The XHR mengirim Metode maka akan mendeteksiFormData
obyek dan secara otomatis mengatur header jenis konten untuk multipart / form-data dengan batas yang tepat .sumber
filesInput
direktif tidak muncul untuk dapat bekerja dengan sudut 1.6.7, saya bisa melihat file dalamng-repeat
tapi sama$scope.variable
kosong di controller? Juga salah satu dari contoh Anda menggunakanfile-model
dan satufiles-input
select-ng-files
. Diuji dengan AngularJS 1.7.2.Saya baru saja mengalami masalah ini. Jadi ada beberapa pendekatan. Yang pertama adalah bahwa browser baru mendukung
Ikuti tautan ini ke blog dengan info tentang bagaimana dukungan terbatas pada peramban modern tetapi jika tidak, ini akan menyelesaikan masalah ini sepenuhnya.
Kalau tidak, Anda dapat memposting formulir ke iframe menggunakan atribut target. Saat Anda memposting formulir, pastikan untuk mengatur target ke iframe dengan properti tampilan tidak diatur. Targetnya adalah nama iframe. (Asal kamu tahu.)
saya harap ini membantu
sumber
Saya tahu ini entri yang terlambat, tetapi saya telah membuat arahan unggahan yang sederhana. Yang mana Anda bisa bekerja dalam waktu singkat!
ng-sederhana-unggah lagi di Github dengan contoh menggunakan Web API.
sumber
Anda dapat mengunggah melalui
$resource
dengan menetapkan data ke atribut params sumber dayaactions
seperti:sumber
Saya baru saja menulis arahan sederhana (dari salah satu ofcourse) untuk pengunggah sederhana di AngularJs.
(Plugin pengunggah jQuery yang tepat adalah https://github.com/blueimp/jQuery-File-Upload )
Pengunggah Sederhana menggunakan AngularJs (dengan Implementasi CORS)
(Meskipun sisi server adalah untuk PHP, Anda juga dapat mengubahnya dengan mudah)
sumber