Django Dosya Yükleme Bitip Bitmediğini Anlamak

BattOS

Hectopat
Katılım
21 Eylül 2019
Mesajlar
88
Daha fazla  
Cinsiyet
Erkek
Merhaba. Bir süredir Django ile ilgileniyorum ve yapamadığım bir şey var. Dosya yükleme yapılırken bitip bitmediğini anlayamıyorum. Bir dosyanın yüklendiğini ve submit edebileceğimi nereden anlarım.

Diyelim ki şöyle bir form var:
HTML:
<form class="form-signin" method="POST" enctype="multipart/form-data">
      {% csrf_token %}
   
      {% if form %}
        {{ form.media }}
        {{ form|crispy }}

        <label for="article_coverInput">Resim</label>
        <input type="file" id="article_coverInput" name="article_cover">

        <br>
        <button class="btn btn-lg btn-primary btn-block text-uppercase" type="submit">Makale Ekle</button>
      {% endif %}
   
  </form>


Formu bu şekilde yapmamın sebebi (yani dosyayı ayırmamın) dosyayı diğer şekilde yüklersem geri bildirim alamayacağımı düşündüm. Belki doğru belki yanlış. Bilmiyorum. Ama bu şekilde şu an sorunsuz dosya yükleme yapabiliyorum. Bu dosya yüklendiğinde ve submit tuşuna basılması gerektiğinde bir alertbox çıkartıp kullanıcıya dosyanın yüklendiğinin haberini vermek istiyorum. Bunu nasıl yapabilirim?

Şimdiden teşekkürler.
 
Dosya yuklemekten kastettigin upload islemi yapmak mi?
File selector ile file select ettiginde dosya yuklemis oluyor aslinda browser tmp dosyalarina sectigin dosyayi kaydediyor. Sonra submit'e basinca upload ediyor. Sen upload'in sonucunu mu gormek istiyorsun?

Normal form davranisini iptal edip, kendin XmlHttpRequest olusturarak upload edersen progress edebilirsin.

XMLHttpRequest: progress event
 
Dosya yuklemekten kastettigin upload islemi yapmak mi?
File selector ile file select ettiginde dosya yuklemis oluyor aslinda browser tmp dosyalarina sectigin dosyayi kaydediyor. Sonra submit'e basinca upload ediyor. Sen upload'in sonucunu mu gormek istiyorsun?

Normal form davranisini iptal edip, kendin XmlHttpRequest olusturarak upload edersen progress edebilirsin.

XMLHttpRequest: progress event

Öncelikle cevap için teşekkürler.
Django da yeni olduğum için bazı şeyleri bilmiyorum.
Daha önce yüksek boyutta dosya yüklemeyi denemedim. Yazdığınızdan anladığım kadarıyla zaten submit butonuna basınca dosyayı yüklemeye başlıyor doğru muyum?
Ben dosyayı seçtikten sonra dosya yüklenmeye başlıyor sanıyordum ve büyük bir dosya yüklediğimiz zaman sürecin bitmesini beklememiz sonra submit etmemiz gerekiyor sanıyordum.
Büyük dosya yüklemesi yaptığı zaman kullanıcı bunu Django halledebiliyor mu? Ben bir yerde sanırım 300mb nin üzerinde dosya almadığını okumuştum.
 
Öncelikle cevap için teşekkürler.
Django da yeni olduğum için bazı şeyleri bilmiyorum.
Daha önce yüksek boyutta dosya yüklemeyi denemedim. Yazdığınızdan anladığım kadarıyla zaten submit butonuna basınca dosyayı yüklemeye başlıyor doğru muyum?
Ben dosyayı seçtikten sonra dosya yüklenmeye başlıyor sanıyordum ve büyük bir dosya yüklediğimiz zaman sürecin bitmesini beklememiz sonra submit etmemiz gerekiyor sanıyordum.
Büyük dosya yüklemesi yaptığı zaman kullanıcı bunu Django halledebiliyor mu? Ben bir yerde sanırım 300mb nin üzerinde dosya almadığını okumuştum.

Django cok bilmiyorum ama genel olarak Django gibi framework ler kullandim. Genellikle upload boyutuna hepsi keyfi olarak bir limitasyon getirir. Tomcat 100MB getiriyordu en son, Oracle Weblogic 10MB. Bunlar default degerler, teorik olarak bir limiti yok istedigin gibi arttirabilirsin. Ama kullanicinin cok yuksek boyutlu dosya yuklemesine izin vermek de ayri bir guvenlik zaafiyeti, DDOS gibi serverini kullanilamaz hale getirebilir junk dosya upload ederek. Yapacagin ise gore mantikli bir limit belirleyip ona gore hareket etmen gerek.

Ve evet, dosya sectigi anda upload etmeye baslamaz. ( Istersen Javascript ile sectigi anda da upload etmesini baslatabilirsin ). Once dosyayi secer, tmp bir dizine yazar, sonra form submit ederken upload isine baslar. Bu noktalarin aslinda Django ile alakasi yok, hala front-end desin cunku, henuz backend e 1 bit bile gitmedi.
 
O biraz üst bilgi gerektirir ancak neden olmayacağını kendi Django sitem ile anlatayım:

Ekran Alıntısı.PNG




Ufak bir blog sayfası. Makale ekleyebiliyoruz. Muhtemelen aynı sistemi yapmışız 😁 .

1.PNG






Makale sayfasında iki tane önceden eklediğim var, takılma onlara. Yeni bir makale ekleyelim.

2.PNG






Burada dosya olarak bir resim ekleyeceğim.

3.PNG






Şimdi önce, resimlerin saklandığı Database'e bakalım:

4.PNG



"Media" klasörü gördüğün gibi boş. ("Kedi.jpg" aklına takılmasın, önceki bir deneme o 😁.)





Klasör tam hâli:


5.PNG






Resmi ekleyelim:

6.PNG



7.PNG






Dosyayı seçtik, şimdi Database'e bakalım:


8.PNG


Gördüğün gibi, hâlâ eklenmemiş.




Tam hali:


9.PNG


Hâlâ yok.





Şimdi sisteme makaleyi ekleyelim:

10.PNG






Şimdi Database'e bakalım:

11.PNG


Gördüğün gibi yüklendikten sonra Database'e de geldi.




Tam hâli:


12.PNG



Yani:

Yani sen orada dosyayı seçince bir yükleme olmuyor, sen submit edince sisteme dosya gidiyor. O yüzden seçince yüklenme çubuğu eklemek sıkıntı oluyor. Sen submit edince Database'e resim yükleniyor yani upload ediliyor.
 

Geri
Yukarı