2016-03-23 32 views
1

私はJavaFileUploadを使用しています。複数のpdfファイルをアップロードしたいと思います。Playframework複数ファイルアップロード

HTML部分:

@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> 
     } 

私は私が正常にアップロードしたいすべてのPDFドキュメントを取得できるようにする)(body.getFile("pdf") as body.getFilesを変更する必要があります。 getFiles()を使用すると、すべてのドキュメントを見ることができます。getFile("pdf")を使用すると、最初のドキュメントが選択されます。

私は5つのPDFドキュメントをアップロードしようとここで私は、それは私がキャストを追加するよう指示 getFile("pdf") getFiles()よう変更した場合、Javaの部分の違い

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

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

です。だから私には2つの選択肢があります。一つは、第二、FilePartキャストを追加することで、このFilePart pdf = (FilePart) body.getFiles(); PlayFrameworkは私に例外を示すように、私はgetFiles()ためFilePartキャストを追加した場合List<FilePart>

にPDFファイルの種類を変更することです:私は、その後、List<FilePart>にオファーをしてPDFファイルの種類を変更した場合[ClassCastException: scala.collection.convert.Wrappers$SeqWrapper cannot be cast to play.mvc.Http$MultipartFormData$FilePart] を私はこのようにpdf.getFilename()にキャストを追加する:((FilePart) pdf).getFilename()、またFile file = pdf.getFiles()に2つのキャストを追加するために私に提供します:File file = (File) ((MultipartFormData) pdf).getFiles()。コードを実行すると、同じ例外が発生します。

  • この場合、複数のpdfドキュメントをアップロードする方法はありますか?

ハーフコード:。必要であれば(私は完全なコードを追加することができ、コードの残りの部分は、SolrのにPDFBoxとインデックスを使用して解析しているとの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(); 
    ... 

プレイフレームワークのバージョン:2.4

答えて

2

ファーストgetFiles()とgetFile( "pdf")の違いは、前者はファイルのリストを取得し、後者は1つのファイルしか取得しないということです。

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

ありがとうございました。 'リスト fileParts =リクエスト()。body()。asMultipartFormData()。getFiles(); (FilePart filePart:fileParts) 'これらの2行は私の日を節約しました –

+0

問題はありません。 – LES

関連する問題