2013-09-26 45 views

回答

2

表單

@form(action = routes.Application.upload, 'enctype -> "multipart/form-data") { 
    <input type="file" name="picture"> 
    <p> 
     <input type="submit"> 
    </p> 
} 

我們的上傳動作

@BodyParser.Of(value = BodyParser.Text.class, maxLength = 10 * 1024) 
public static Result upload() { 
    MultipartFormData body = request().body().asMultipartFormData(); 
    FilePart picture = body.getFile("picture"); 
    if (picture != null) { 
    String fileName = picture.getFilename(); 
    String contentType = picture.getContentType(); 
    File file = picture.getFile(); 
    return ok("File uploaded"); 
    } else { 
    flash("error", "Missing file"); 
    return redirect(routes.Application.index());  
    } 
} 

只要改變maxLength = 10 * 1024(這只是各地10KB)到你想要的長度更本可以在documentation

被發現

如果您要通過Ajax發送文件。使用此

public static Result upload() { 
    File file = request().body().asRaw().asFile(); 
    return ok("File uploaded"); 
} 

從上面將被編碼爲Mutlipart/form-data,但將只包含簡單的內容文件

+0

感謝張貼的響應...........我這樣做了,不過它去保存在臨時文件夾.......我想要的是保存在一些目標文件夾......... –

+0

也上面的代碼不適用於更大的文件說12GB ......幫助是需要.......我會非常感激,如果你建議我一些鏈接,我可以在playframework讀取java ....... –

+0

如果我沒有記錯,默認情況下瀏覽器不能上傳超過4Gb在最大。這是你應該考慮的事情。但是如果你能繞過它,你可以配置你的Play配置來接受一定大小的文件。我更新了我的答案。 關於發送到另一個目的地。你已經有文件名爲文件,爲什麼你不只是傳遞它programmaticaly – KyelJmD