Ini formulir HTML saya:
<form name="myForm" ng-submit="">
<input ng-model='file' type="file"/>
<input type="submit" value='Submit'/>
</form>
Saya ingin mengunggah gambar dari mesin lokal dan ingin membaca konten file yang diunggah. Semua ini ingin saya lakukan menggunakan AngularJS.
Ketika saya mencoba mencetak nilai $scope.file
itu datang sebagai tidak terdefinisi.
angularjs
angularjs-fileupload
Aditya Sethi
sumber
sumber
Jawaban:
Beberapa jawaban di sini mengusulkan penggunaan
FormData()
, tetapi sayangnya itu adalah objek browser yang tidak tersedia di Internet Explorer 9 dan di bawahnya. Jika Anda perlu mendukung browser yang lebih lama, Anda akan memerlukan strategi cadangan seperti menggunakan<iframe>
atau Flash.Sudah ada banyak modul Angular.js untuk melakukan pengunggahan file. Keduanya memiliki dukungan eksplisit untuk browser lama:
Dan beberapa opsi lain:
Salah satunya harus sesuai dengan proyek Anda, atau mungkin memberi Anda wawasan tentang cara membuat kode sendiri.
sumber
Yang paling mudah adalah dengan menggunakan HTML5 API, yaitu
FileReader
HTML cukup mudah:
Di controller Anda, tentukan metode 'add':
Kompatibilitas Browser
Browser Desktop
Peramban Seluler
Catatan: metode readAsBinaryString () sudah usang dan readAsArrayBuffer () harus digunakan sebagai gantinya.
sumber
onloadend
fungsi panggilan balik. Anda tidak perlu pustaka untuk menggunakan API ini, sudah ada di browser Anda (kecuali jika Anda menggunakan yang sangat lama). Semoga ini membantu.readAsArrayBuffer
metode FileReaderSync (yang hanya tersedia di pekerja web) alih-alih API FileReader async biasa ?Ini adalah cara browser modern, tanpa perpustakaan pihak ke-3. Bekerja pada semua browser terbaru.
HTML:
PHP:
js fiddle (hanya bagian depan) https://jsfiddle.net/vince123/8d18tsey/31/
sumber
ng-submit
atau formulir? Ini dengan sendirinya tidak melakukan apa punDi bawah ini adalah contoh unggahan file yang berfungsi:
http://jsfiddle.net/vishalvasani/4hqVu/
Dalam fungsi yang satu ini disebut
Dari View yang akan memperbarui array file di controller
atau
Anda dapat memeriksa Upload File jQuery menggunakan AngularJS
http://blueimp.github.io/jQuery-File-Upload/angularjs.html
sumber
Anda dapat mencapai bagus berkas dan folder upload menggunakan flow.js .
https://github.com/flowjs/ng-flow
Lihat demo di sini
http://flowjs.github.io/ng-flow/
Itu tidak mendukung IE7, IE8, IE9, jadi Anda akhirnya harus menggunakan lapisan kompatibilitas
https://github.com/flowjs/fusty-flow.js
sumber
Gunakan
onchange
acara tersebut untuk meneruskan elemen file input ke fungsi Anda.<input type="file" onchange="angular.element(this).scope().fileSelected(this)" />
Jadi, ketika pengguna memilih file, Anda memiliki referensi untuk itu tanpa pengguna perlu mengklik tombol "Tambah" atau "Unggah".
sumber
Saya mencoba semua alternatif yang @Anoyz (jawaban yang benar) berikan ... dan solusi terbaik adalah https://github.com/danialfarid/angular-file-upload
Beberapa fitur:
Ini bekerja dengan baik untuk saya. Anda hanya harus memperhatikan instruksi.
Di sisi server saya menggunakan NodeJs, Express 4 dan Multer middleware untuk mengelola permintaan multi-bagian.
sumber
nlzt9LJWRrAZEO3ZteZUOgGc
tetapi tanpa format .png. Bagaimana cara menambahkannya?HTML
Skrip
sumber
The
<input type=file>
unsur tidak oleh pekerjaan default dengan ng-model yang direktif . Perlu arahan khusus :Demo Kerja
select-ng-files
Petunjuk yang Bekerja denganng-model
1$http.post
dari FileListSaat 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.sumber
Mudah dengan arahan
Html:
JS:
Dalam arahan kami memastikan ruang lingkup baru dibuat dan kemudian mendengarkan perubahan yang dilakukan pada elemen input file. Ketika perubahan terdeteksi dengan memancarkan suatu peristiwa ke semua cakupan leluhur (ke atas) dengan objek file sebagai parameter.
Di controller Anda:
Kemudian dalam panggilan ajax Anda:
http://shazwazza.com/post/uploading-files-and-json-data-in-the-same-request-with-angular-js/
sumber
saya pikir ini adalah unggahan file sudut:
ng-file-upload
Arahan JS Angular Ringan untuk mengunggah file.
Ini halaman DEMO. Fitur
https://github.com/danialfarid/ng-file-upload
sumber
File Anda dan mengunggah data json pada saat yang sama.
sumber
Anda dapat menggunakan
FormData
objek yang aman dan cepat:sumber
<input type="file" ng-change="contentChanged($event)">
, bagaimana cara melakukannya?http://jsfiddle.net/vishalvasani/4hqVu/ berfungsi dengan baik di chrome dan IE (jika Anda memperbarui CSS sedikit di latar belakang-gambar). Ini digunakan untuk memperbarui bilah kemajuan:
tetapi data [persen] sudut FireFox tidak berhasil diperbarui dalam DOM, meskipun file berhasil diunggah.
sumber
load
acara dan jika panjangnya dapat dihitung maka jalankan acara kemajuan untuk menunjukkan keberhasilan unggahan. github.com/danialfarid/angular-file-upload sudah menangani itu.Anda dapat mempertimbangkan IaaS untuk mengunggah file, seperti Uploadcare . Ada paket Angular untuk itu: https://github.com/uploadcare/angular-uploadcare
Secara teknis ini diterapkan sebagai arahan, menyediakan berbagai opsi untuk mengunggah, dan manipulasi untuk gambar yang diunggah dalam widget:
Opsi konfigurasi lain untuk dimainkan: https://uploadcare.com/widget/configure/
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
HTML
tambahkan metode 'profileimage ()' ke controller Anda
sumber
Ini harusnya merupakan pembaruan / komentar untuk jawaban @ jquery-guru tetapi karena saya tidak memiliki cukup perwakilan, ini akan masuk ke sini. Ini memperbaiki kesalahan yang sekarang dihasilkan oleh kode.
https://jsfiddle.net/vzhrqotw/
Perubahan pada dasarnya adalah:
Untuk:
Jangan ragu untuk pindah ke lokasi yang lebih tepat jika diinginkan.
sumber
Saya telah membaca semua utas dan solusi API HTML5 tampak yang terbaik. Tapi itu mengubah file biner saya, merusaknya dengan cara yang belum saya selidiki. Solusi yang bekerja dengan sempurna bagi saya adalah:
HTML:
JS:
Sisi server (PHP):
sumber
Saya dapat mengunggah file menggunakan AngularJS dengan menggunakan kode di bawah ini:
The
file
untuk argumen yang perlu dilalui untuk fungsingUploadFileUpload
adalah$scope.file
sebagai per pertanyaan Anda.Poin kunci di sini adalah menggunakan
transformRequest: []
. Ini akan mencegah $ http untuk mengacaukan isi file.sumber
Jawaban yang diterima di atas tidak kompatibel dengan browser. Jika seseorang memiliki masalah kompatibilitas coba ini.
Biola
Lihat Kode
Kode pengontrol
sumber
dengan kata-kata sederhana
dalam Html - tambahkan hanya kode di bawah ini
di controller - Fungsi ini dipanggil ketika Anda mengklik "tombol unggah file" . itu akan mengunggah file. Anda bisa menghiburnya.
tambahkan lebih banyak di pengontrol - kode di bawah ini menambah fungsi. Fungsi ini dipanggil ketika Anda mengklik tombol yang digunakan "hitting the api (POST)" . itu akan mengirim file (yang diunggah) dan form-data ke backend.
dalam hal ini .. saya menambahkan kode di bawah ini sebagai data formulir
sumber
Di pengontrol angularJS
sumber
Kami telah menggunakan HTML, CSS, dan AngularJS. Contoh berikut menunjukkan tentang cara mengunggah file menggunakan AngularJS.
sumber
Contoh Kerja menggunakan Petunjuk Sederhana ( ng-file-model ):
dan gunakan
FormData
untuk mengunggah file di fungsi Anda.semua kredit berlaku https://github.com/mistralworks/ng-file-model
Saya telah menghadapi masalah kecil, Anda dapat memeriksanya di sini: https://github.com/mistralworks/ng-file-model/issues/7
Akhirnya, inilah repo bercabang: https://github.com/okasha93/ng-file-model/blob/patch-1/ng-file-model.js
sumber
Kode ini akan membantu memasukkan file
insert.js
save_data.php
sumber
ini bekerja
file.html
controller.js
fileupload.php
sumber
UNGGAH BERKAS
UNDUH FILE:
sumber
sumber