Play 2.0 用户指南 - 文件上传 -- 针对Scala开发者

    处理文件上传

    在form中指定multipart/form-data属性上传文件

    上传文件的标准方式是指定form的一个特殊属性 multipart/form-data ,可以让你混合表单数据和表单文件附件。

    开始编写HTML表单:

1@form(action = routes.Application.upload, 'enctype -> "multipart/form-data") { 2 3 <input type="file" name="picture"> 4 5 <p> 6 <input type="submit"> 7 </p> 8 9}

    定义 upload action,使用 multipartFormData body parser:

1def upload = Action(parse.multipartFormData) { request => 2 request.body.file("picture").map { picture => 3 import java.io.File 4 val filename = picture.filename 5 val contentType = picture.contentType 6 picture.ref.moveTo(new File("/tmp/picture")) 7 Ok("File uploaded") 8 }.getOrElse { 9 Redirect(routes.Application.index).flashing( 10 "error" -> "Missing file" 11 ) 12 } 13}

    ref 给予你一个指向 TemporaryFile 的引用。这是 mutipartFormData parser 处理文件上传的基本方式。

    注意:你也可以使用 anyContent body parser 并以request.asMultipartFormData取出内容。

直接上传文件

    另一种方式是使用ajax上传文件。这种情况下,form不需要设置编码为 multipart/form-data。
    这种情况下,我们只需要使用一个 body parser 將 request body 保存到一个文件中。例如,我们使用 temporaryFile body parser:
   

1def upload = Action(parse.temporaryFile) { request => 2 request.body.moveTo(new File("/tmp/picture")) 3 Ok("File uploaded") 4}

    自定义 body parser

    如果你想直接处理上传的文件,而不是放入临时文件中缓冲,那么你需要编写自定义的 body parser。这种情况下,你將接到数据块,放于任何你期望的地方。

    如果你想使用 multipart/form-data 编码,你仍然可以使用默认的 mutipartFormData parser并提供自定义的PartHandler[FilePart[A]]。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java中使用restful web service来传输文件

【1】上传大文件:前端页面:1)同步上传:<html<body<formaction"http://localhost:8081/webProject/api/file/uploadFile"method"post"enctype"multipart/form

PHP 文件上传的原理及案例分析

原理将客户端文件上传至服务器端,在服务器端临时存储,再将服务器端临时存储的文件移至指定位置实现文件上传需要的知识点:前端页面1.form表单必须是用post发送方式,因为get会将参数带到url中,而上传的文件转换后字符会很长,而且也是为了安全性2.form表单需要使用enctype

PHP实现图片(文件)上传

这几天整理做过的php项目,感觉这个经常会用到,传上来共享一下咯首先,前端界面1、表单的首行需要加上enctype"multipart/formdata",需要上传的图片必须设置type"file"表示选择文件<formid"img_form"method"post"class"formhorizontal"r