2015-08-11 18 views
7

FormData ve spring kullanarak çok yönlü dosyaları yüklemeye çalışıyorum.ajax ve spring mvc kullanarak birden çok dosya yükleyin

HTML:

<input type="file" name="img" multiple id="upload-files"> 

JS kodu:

var ajaxData = new FormData(); 
var files = $('#upload-files').prop('files'); 
for(var i=0;i<files.length;i++){ 
    ajaxData.append('file['+i+']', files[i]); 
} 
ajaxData.append("file", files); 
$http.post('../rest/upload', ajaxData, { 
    headers: {'Content-Type': undefined }, 
    transformRequest: angular.identity 
}); 

Bahar Denetleyici kodu:

Ancak
@RequestMapping(value = "/upload", produces="application/json", method = RequestMethod.POST) 
@ResponseBody 
public String upload(
     @RequestParam ArrayList<MultipartFile> files 
){ 
    System.out.println(files.size()); 
    return null; 
} 

, dosyaların sayısı ile isteği göndermeden 0'a olduğu ortaya geliyor çoklu dosyalar. ArrayList yerine MultipartFile[] files dizi notasyonu kullanıldığında, 400, Bad Request verir.

Yay denetleyicisi birden çok dosya ile nasıl çalışır? Diğer SO sorularına çözüm bulamıyorum.

+0

Listeye nesnesini yeniden yerleştirmeyi denediniz mi ve spring-servlet.xml dosyasında CommonsMultipartResolver ve InternalResourceViewResolver'ı yapılandırdınız mı? –

+0

Form gönderme düğmesine doğru şekilde encType eklediniz mi? Örneğin.

ve giriş tipi olarak

cevap

4

Varsayılan olarak, DataBinder, istek parametrelerini kural ile hedef nesnelere bağlamaya çalışır; isteğe göre parametre adları (durumunuzdaki FormData) ve denetleyicinin eylemi eşleşmelidir. hemen sonra olan (bu hat ajaxData.append("file", files); silin ArrayList<MultipartFile> files den

for(var i=0; i < files.length; i++){ 
    ajaxData.append('files[' + i + ']', files[i]); 
} 

VEYA yeniden adlandırma eylemin parametresi ArrayList<MultipartFile> file


Ayrıca

için: Senin durumunda

Eğer file[i]files[i] için yeniden adlandırmak gerekir döngü için), çünkü aynı ada sahip bir parametre ayarlıyor ve bir çeşit aksaklık meydana gelebilir.

Bu yardımcı olur umarım.

İlgili konular