2016-03-23 35 views
1

JavaFileUpload kullanıyorum ve birden fazla pdf dosyası yüklemek istiyorum.Playframework Çoklu Dosya Yükleme

HTML kısmı:

@helper.form(action = routes.Application.uploadPost, 'enctype -> "multipart/form-data") { 
     <input type="file" id="inputFile" name="pdf" accept="application/pdf" multiple autofocus > 
     <p> 
      <input type="submit"> 
     </p> 
     } 

ben body.getFile("pdf") as body.getFiles() başarıyla yüklemek istediğiniz her pdf belgesini elde edebilmek için değişmelidir. getFiles() kullanıyorum ve getFile("pdf") kullanırsam her belgeyi görebilirim, sadece ilk belgeyi seçer.

Beş pdf belgeleri yüklemeye çalıştınız ve burada ben, benim atması eklemek için söyler getFile("pdf") getFiles() olarak değiştirirseniz, Java bölümünde farkı

getFiles() ila getFile("pdf")
output of getFiles(): [[email protected], [email protected], [email protected], [email protected], [email protected]] 

output of getFile("pdf"): [email protected] 

olduğunu. Yani bana iki seçenek sunuyor. , [ClassCastException: scala.collection.convert.Wrappers$SeqWrapper cannot be cast to play.mvc.Http$MultipartFormData$FilePart] ben List<FilePart> için pdf türünü değiştirirseniz o zaman teklifler: Tek FilePart atması eklemek için, ikinci ben getFiles() için FilePart döküm eklerseniz bu FilePart pdf = (FilePart) body.getFiles(); Play Framework bana bir istisna gösterir gibi List<FilePart>

için pdf türünü değiştirmektir pdf.getFilename() gibi bir cast eklemek için: ((FilePart) pdf).getFilename(), ayrıca bu gibi File file = pdf.getFiles() iki atış eklemek için sunuyor: File file = (File) ((MultipartFormData) pdf).getFiles(). Kodu çalıştırırsam aynı istisnayı da alırım.

  • Bu durumda birden fazla pdf belgesi yüklemek için herhangi bir yol var mı?

Yarım kodu: (ı gerekirse kodun kalan Solr ve Hbase

import play.mvc.Http.MultipartFormData; 
import play.mvc.Http.MultipartFormData.FilePart; 

MultipartFormData body = request().body().asMultipartFormData(); 

    for(int i=0; i<body.getFiles().size(); i++) { 
    body = request().body().asMultipartFormData(); 
    FilePart pdf = body.getFile("pdf"); //getFiles(); 
    String fileName = pdf.getFilename(); 
    File file = pdf.getFile(); //getFiles(); 
    ... 

Çal çerçeve sürümü içine PDFBox ve indeksleme kullanarak ayrıştırma tam kod ekleyebilirsiniz. 2.4

cevap

2

İlk , GetFiles arasındaki fark() ve getFile ("pdf") eski olduğu ikincisi ise yalnızca bir dosya almak dosyaların listesini alır.

aşağıdaki kodu deneyin.

List<FilePart> fileParts = request().body().asMultipartFormData().getFiles(); 
for(FilePart filePart : fileParts) { 
    filePart.getFile(); 
} 
+0

Yardımlarınız için teşekkür ederiz. 'List fileParts = request(). Body(). AsMultipartFormData(). GetFiles(); için (FilePart filePart: fileParts) 'Bu iki satır benim günümü kurtardı –

+0

no problem Ali. – LES