2013-06-05 19 views
5

Ben tipik form içinde FineUploader kullanmak istiyorum: ince yükleyici - diğer giriş alanları ile birlikte nasıl kullanılır?

<form enctype="multipart/form-data" method="post""> 
    <input name="fileupload" type="file" "> 
    <input type="text" name="title" size="45" maxlength="100"> 
    <textarea name="description" cols="40" rows="8"></textarea> 
    <input type="hidden" name="op" value="Add"> 
<input type="submit" value="Upload"> 

Yani aslında esas <input name="fileupload" type="file" "> bölümünü değiştirmek istiyoruz.

Maalesef JavaScript ve jQuery jeti hakkında bilgi sahibi değilim ve bunun nasıl yapılacağı hakkında hiçbir fikrim yok. FineUploader'ın gönderilecek diğer verilerle birlikte kullanıldığı herhangi bir örnek kod bulamadım.

Herhangi bir yardım için minnettarım!

Teşekkür Kashuda

+0

Size bir cevap vermeden önce biraz daha fazla bilgiye ihtiyacım var. İlk olarak, yukarıdaki kodunuza dayanarak, yalnızca bir kullanıcının ONE dosyasını seçmesini istediğiniz gibi görünüyor. Bu senin niyetin mi? İkincisi, kullanıcılarınızın yüklenecek dosyaları sürükleyip bırakmasına da izin veriyor musunuz? –

+0

Kullanıcıların dosya yükleyebileceği farklı alanlara/kategorilere sahibim. Genellikle sadece bir dosya yüklerler. Ama bir durumda, yüklenecek iki dosyaya ihtiyacım var. Bir önizleme dosyası (.jpg) olmalı, ikinci ana nesne (.zip) olmalıdır. Sürükle ve bırak gerçekten gerekli değildir. İhtiyacım olan şey, yükleme işleminden önce dosya yükleme ve dosya boyutu ve dosya boyutu kontrolüdür. (Btw. JQuery seçeneklerini arıyorum) – Kashuda

+0

Bunun üstesinden gelmenin çeşitli yolları vardır. Sonuç olarak, sorunuz oldukça karmaşık ve ayrıntılı bir cevap gerektiriyor. Gelecek 6-9 saatte bir şey yazacağım. –

cevap

5

Güzel Yükleyici o isteğe bağlı jQuery plug-in var (ya da bu konuda herhangi bir başka kütüphane) jQuery gerektirmez iken. JQuery'yi kullanmaya karşı değilseniz, jQuery eklentisi olarak jQuery eklentisini kullanmanızı tavsiye ederim.

Bu kediyi derlemek için birkaç yol vardır. Her iki durumda da, formül yaklaşık aynıdır. Bu, Fine Uploader'ın dosyaları işleme koymasını, gönderilen her dosya için anında giriş öğeleri oluşturmasını ve Fine Uploader'ın ilişkili dosyayı sunucunuza göndermesinden hemen önce bu girdilerin değerlerini Fine Uploader'a geri iletmesini sağlar.

Seçenek # 1 - (önceden oluşturulmuş kullanıcı arayüzünü kullanarak) FineUploader modu

FineUploader mode kullanma:

Sen ihtiyaçlarınıza göre yukarıdaki koda ekleyin ve CSS katkıda gereken muhtemel olacak
<div id="myFineUploaderContainer"></div> 
<button id="uploadSelectedFiles">Upload Selected Files</button> 

$('#myFineUploaderContainer').fineUploader({ 
    request: { 
     endpoint: '/my/upload/endpoint' 
    }, 
    autoUpload: false 
}) 
    .on('submitted', function(event, id, name) { 
     var fileItemContainer = $(this).fineUploader('getItemByFileId', id); 

     $(fileItemContainer) 
     .prepend('<input type="text" name="name">') 
     .append('<input type="text" name="description">'); 
    }) 
    .on('upload', function(event, id, name) { 
     var fileItemContainer = $(this).fineUploader('getItemByFileId', id), 
      enteredName = $(fileItemContainer).find('INPUT[name="name"]').val(), 
      enteredDescr = $(fileItemContainer).find('INPUT[namme="description"]').val(); 

     $(this).fineUploader('setParams', {name: enteredName, description: enteredDescr}, id); 
    }); 

$('#uploadSelectedFiles').click(function() { 
    $('#myFineUploaderContainer').fineUploader('uploadStoredFiles'); 
}); 

Uygun olan yerlerde, ancak bu doğru yönde bir başlangıçtır. Yukarıda, Fine Yükleyicinin, liste öğesini seçilen bir dosyayı temsil eden DOM'a eklediğinde sizi geri çağırmasını bekliyorsunuz. Bu geri bildirimi aldığınızda, liste öğesinin başına (kullanıcı tarafından sağlanan ad için) ve liste öğesinin sonunda (kullanıcı tarafından sağlanan açıklama için) bir metin giriş öğesi ekliyorsunuz. Fine Uploader, dosyayı sunucunuza gönderir, giriş öğelerinin değerlerini okuduğunuz ve Fine Uploader'a dosya kimliği aracılığıyla dosyayla ilişkilendirdiğiniz "upload" olay işleyicinizi çağırır. Çok satır kodlu POST isteğindeki dosyayla birlikte sunucunuza gönderilir.

Tıklatma işleyicisi, Fine Uploader'ın dosyaları sunucunuza göndermesini bildirir. Kullanıcınız tüm dosyaları seçip tıkladıktan sonra bunu tıklar. Giriş alanlarını uygun şekilde düzenleyin: Normal Yükleyici, dosyaları seçildikten hemen sonra sunucuya gönderir, ancak bu toggli tarafından değiştirilebilir. autoUpload seçeneğini kullanın. Durumunuz için, otomatik yüklemeyi kapatmak en mantıklı.

kullanma FineUploader modu bunun çoğu sizin için yapıldığı gibi, kullanıcı arayüzünde hakkında çok fazla endişelenmenize gerek yok demektir ve ücretsiz ilerleme çubukları ve diğer UI hediyeler ile birlikte, sürükle & bırak fonksiyonunu olsun.

Seçenek # 2 - FineUploaderBasic mod (kendi UI inşa)

İkinci tercihiniz FineUploaderBasic mode kullanmaktır. Bu size UI'niz üzerinde en fazla kontrolü verir, ancak kendi UI'nizi tamamen oluşturmak için ihtiyaç duyacağınız en fazla işi gerektirir. Bu, UI'nuzu oluşturmak ve Fine Uploader'ın dahili durumuyla ve ilişkili dosyalarla senkronize durumda tutmak için çoğu callbacks'dan faydalanmanız gerektiği anlamına gelir.

Örneğin, ilerleme çubukları istiyorsanız, bunları kendiniz oluşturmanız ve Fine Uploader tarafından çağrılan bir onProgress geri arama işleyicisinden düzenli olarak geçirilen bilgilere dayanarak bunları güncelleştirmeniz gerekir. Javascript, HTML ve CSS ile oldukça rahat olursanız, tüm bunlar iyi ve muhtemelen bazı durumlarda tercih edilir. Bununla birlikte, eğer değilseniz, FineUploader modunu kullanmaya çalışın.

FineUploaderBasic modu, kutudan çıkarma ve bırakma desteğini içermez, ancak isterseniz Fine Uploader's standalone File Drag & Drop module kolayca tümleştirebilirsiniz.

+0

Tamam. Bu kapsamlı cevap için teşekkürler. Üç şey hala benim için net değil: 1.) Kullanıcı daha sonra yüklemek istediği dosyayı değiştirmeye karar verirse, diğer tüm giriş alanlarını doldurdu, bu alanlar onSubmit eylemi tekrar çağrıldığından beri silinir. 2.) Önizlemem için nasıl ikinci bir yükleme düğmesi ekleyebilirim? 3.) Başarılı bir yüklemeden sonra nasıl yeni bir sayfa yüklerim? – Kashuda

+0

1) Bu Yükleyicinin nasıl çalıştığını anlamanız net değil. Cevabımı denemenizi tavsiye ederim. Tüm dosyalar için toplamda sadece bir tane Yükleyici var. 2) neden iki yükleme düğmesi istiyorsun? Yine, bunun nasıl çalıştığını anladığını sanmıyorum. İki düğme için gerek yoktur, tüm dosyalar için sadece bir düğme. 3) Tüm dosyalar tamamlandıktan sonra tamamlandıktan sonra "tamamlandı" işleyicisine yeni bir sayfa yükleyin. Ayrıntılar için belgelere bakın. –

+0

Yukarıdaki "Tam olarak tartışın", "başarıyla" okumalıdır –

İlgili konular